Ignore me. :-) While MachineInstr doesn't require all the defs to be at the start of the operand list, it looks like TargetInstrInfo and scheduledag does. So I suppose your change is perfectly safe / correct.
Evan On Feb 15, 2008, at 4:32 PM, Dan Gohman wrote: > Ok. I'm working to understand the dance between target SDNodes and > MachineInstrs and I mistook what was going on there. Can you point me > to > an example where an instruction has def operands that aren't first, > not > counting ImplicitDefs defs? > > Dan > > On Feb 15, 2008, at 3:15 PM, Evan Cheng wrote: > >> Hi Dan, >> >> This is not right. You are assuming def operands must be first in the >> operand list. But that's not necessary the case. >> >> Evan >> >> On Feb 15, 2008, at 12:59 PM, Dan Gohman wrote: >> >>> Author: djg >>> Date: Fri Feb 15 14:59:17 2008 >>> New Revision: 47177 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=47177&view=rev >>> Log: >>> Skip over the defs and start at the uses when looking for operands >>> with the TIED_TO attribute. >>> >>> Modified: >>> llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp >>> >>> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp?rev=47177&r1=47176&r2=47177&view=diff >>> >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> = >>> ==================================================================== >>> --- llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp >>> (original) >>> +++ llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp Fri >>> Feb 15 14:59:17 2008 >>> @@ -431,7 +431,7 @@ >>> SUnit *NewSU = NewSUnit(N); >>> SUnitMap[N].push_back(NewSU); >>> const TargetInstrDesc &TID = TII->get(N->getTargetOpcode()); >>> - for (unsigned i = 0; i != TID.getNumOperands(); ++i) { >>> + for (unsigned i = TID.getNumDefs(); i != >>> TID.getNumOperands(); + >>> +i) { >>> if (TID.getOperandConstraint(i, TOI::TIED_TO) != -1) { >>> NewSU->isTwoAddress = true; >>> break; >>> >>> >>> _______________________________________________ >>> llvm-commits mailing list >>> llvm-commits@cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits >> >> _______________________________________________ >> llvm-commits mailing list >> llvm-commits@cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits > > _______________________________________________ > llvm-commits mailing list > llvm-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits