Changes in directory llvm/lib/CodeGen/SelectionDAG:
LegalizeDAG.cpp updated: 1.373 -> 1.374 --- Log message: Legalize FORMAL_ARGUMENTS nodes correctly, we don't want to legalize them once for each argument. --- Diffs of the changes: (+11 -2) LegalizeDAG.cpp | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp diff -u llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.373 llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.374 --- llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.373 Fri May 12 21:11:14 2006 +++ llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Tue May 16 00:49:56 2006 @@ -819,9 +819,18 @@ case ISD::FORMAL_ARGUMENTS: // The only option for this is to custom lower it. - Result = TLI.LowerOperation(Result, DAG); + Result = TLI.LowerOperation(Result.getValue(0), DAG); assert(Result.Val && "Target didn't custom lower ISD::FORMAL_ARGUMENTS!"); - break; + + // Since FORMAL_ARGUMENTS nodes produce multiple values, make sure to + // remember that we legalized all of them, so it doesn't get relegalized. + for (unsigned i = 0, e = Result.Val->getNumValues(); i != e; ++i) { + Tmp1 = LegalizeOp(Result.getValue(i)); + if (Op.ResNo == i) + Tmp2 = Tmp1; + AddLegalizedOperand(SDOperand(Node, i), Tmp1); + } + return Tmp2; case ISD::BUILD_VECTOR: switch (TLI.getOperationAction(ISD::BUILD_VECTOR, Node->getValueType(0))) { _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits