[PATCH] D20102: [ScheduleDAG] Make sure to process all def operands before any use operands

Matthias Braun via llvm-commits llvm-commits at lists.llvm.org
Tue May 10 11:19:11 PDT 2016


MatzeB added inline comments.

================
Comment at: llvm/trunk/lib/CodeGen/ScheduleDAGInstrs.cpp:974-975
@@ +973,4 @@
+      const MachineOperand &MO = MI->getOperand(j);
+      if (!MO.isReg() || !MO.isUse())
+        continue;
+      unsigned Reg = MO.getReg();
----------------
atrick wrote:
> MatzeB wrote:
> > This will subregister defs which are uses as well, should be `!MO.readsReg())!
> Matthias, can you clarify? We don't want addPhysRefDefs to be called twice for the same subreg!
Something like this:
`%vreg0:sub0 = ...` is both a definition and a use! (at least if lanemask tracking is not enabled), we still need to record it as a use. physregs never have subregister indexes so MO.readsReg() will never return true for physreg definitions.


Repository:
  rL LLVM

http://reviews.llvm.org/D20102





More information about the llvm-commits mailing list