Page MenuHomePhabricator

[ScheduleDAG] Make sure that addVRegUseDeps is called on subreg defs

Authored by kparzysz on May 10 2016, 1:16 PM.



A follow-up to D20102:

A def operand of a virtual register can actually read a register as well. Specifically, this happens in definitions of subregisters of a virtual register (unless the "undef" flag is present). This form of a use of a register should be accounted for in the construction of the dependence graph. In ScheduleDAGInstrs::buildSchedGraph, make sure that the function addVRegUseDeps is called for such defs.

Diff Detail


Event Timeline

kparzysz updated this revision to Diff 56791.May 10 2016, 1:16 PM
kparzysz retitled this revision from to [ScheduleDAG] Make sure that addVRegUseDeps is called on subreg defs.
kparzysz updated this object.
kparzysz added reviewers: atrick, MatzeB.
kparzysz set the repository for this revision to rL LLVM.
kparzysz added a subscriber: llvm-commits.
MatzeB edited edge metadata.May 10 2016, 1:20 PM

That is the case I just discussed with Andy. We believe that the current code is fine because we get the output dependence edge anyway. So for now I added a comment to document this fact and avoid creating extra edges.

kparzysz abandoned this revision.May 10 2016, 1:22 PM

Ah, ok. I thought the original concern was that my first patch changed the existing behavior (which was then declared as not being the case), and that there was still an issue with the subregister definitions.