[llvm-commits] [llvm] r41386 - /llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
Chris Lattner
sabre at nondot.org
Fri Aug 24 17:53:07 PDT 2007
Author: lattner
Date: Fri Aug 24 19:53:07 2007
New Revision: 41386
URL: http://llvm.org/viewvc/llvm-project?rev=41386&view=rev
Log:
Teach the dag scheduler to handle inline asm nodes with multi-value immediate operands.
Modified:
llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
Modified: llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp?rev=41386&r1=41385&r2=41386&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp Fri Aug 24 19:53:07 2007
@@ -753,15 +753,16 @@
}
break;
case 3: { // Immediate.
- assert(NumVals == 1 && "Unknown immediate value!");
- if (ConstantSDNode *CS=dyn_cast<ConstantSDNode>(Node->getOperand(i))){
- MI->addImmOperand(CS->getValue());
- } else {
- GlobalAddressSDNode *GA =
- cast<GlobalAddressSDNode>(Node->getOperand(i));
- MI->addGlobalAddressOperand(GA->getGlobal(), GA->getOffset());
+ for (; NumVals; --NumVals, ++i) {
+ if (ConstantSDNode *CS =
+ dyn_cast<ConstantSDNode>(Node->getOperand(i))) {
+ MI->addImmOperand(CS->getValue());
+ } else {
+ GlobalAddressSDNode *GA =
+ cast<GlobalAddressSDNode>(Node->getOperand(i));
+ MI->addGlobalAddressOperand(GA->getGlobal(), GA->getOffset());
+ }
}
- ++i;
break;
}
case 4: // Addressing mode.
More information about the llvm-commits
mailing list