Changes in directory llvm/lib/Target/PowerPC:
PPCISelLowering.cpp updated: 1.74 -> 1.75 --- Log message: Fix a bug in my elimination of ISD::CALL this morning. PPC now has to provide the expansion for i64 calls itself --- Diffs of the changes: (+9 -2) PPCISelLowering.cpp | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) Index: llvm/lib/Target/PowerPC/PPCISelLowering.cpp diff -u llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.74 llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.75 --- llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.74 Fri Jan 27 17:34:02 2006 +++ llvm/lib/Target/PowerPC/PPCISelLowering.cpp Sat Jan 28 01:33:03 2006 @@ -173,6 +173,7 @@ case PPCISD::SRL: return "PPCISD::SRL"; case PPCISD::SRA: return "PPCISD::SRA"; case PPCISD::SHL: return "PPCISD::SHL"; + case PPCISD::CALL: return "PPCISD::CALL"; case PPCISD::RET_FLAG: return "PPCISD::RET_FLAG"; } } @@ -835,8 +836,12 @@ if (RetTyVT >= MVT::i1 && RetTyVT <= MVT::i16) ActualRetTyVT = MVT::i32; // Promote result to i32. - if (RetTyVT != MVT::isVoid) + if (RetTyVT == MVT::i64) { + RetVals.push_back(MVT::i32); + RetVals.push_back(MVT::i32); + } else if (RetTyVT != MVT::isVoid) { RetVals.push_back(ActualRetTyVT); + } RetVals.push_back(MVT::Other); // If the callee is a GlobalAddress node (quite common, every direct call is) @@ -849,7 +854,7 @@ Ops.push_back(Callee); Ops.insert(Ops.end(), args_to_use.begin(), args_to_use.end()); SDOperand TheCall = DAG.getNode(PPCISD::CALL, RetVals, Ops); - Chain = TheCall.getValue(RetTyVT != MVT::isVoid); + Chain = TheCall.getValue(TheCall.Val->getNumValues()-1); Chain = DAG.getNode(ISD::CALLSEQ_END, MVT::Other, Chain, DAG.getConstant(NumBytes, getPointerTy())); SDOperand RetVal = TheCall; @@ -860,6 +865,8 @@ RetVal = DAG.getNode(RetTy->isSigned() ? ISD::AssertSext : ISD::AssertZext, MVT::i32, RetVal, DAG.getValueType(RetTyVT)); RetVal = DAG.getNode(ISD::TRUNCATE, RetTyVT, RetVal); + } else if (RetTyVT == MVT::i64) { + RetVal = DAG.getNode(ISD::BUILD_PAIR, MVT::i64, RetVal, RetVal.getValue(1)); } return std::make_pair(RetVal, Chain); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits