diff options
author | Bob Wilson <bob.wilson@apple.com> | 2009-04-25 00:33:20 +0000 |
---|---|---|
committer | Bob Wilson <bob.wilson@apple.com> | 2009-04-25 00:33:20 +0000 |
commit | 8091524d98ca648c195224fab599f1c6afdd880a (patch) | |
tree | 85de8060c31066f526bcb648c51b4946fdd42ffc | |
parent | 2f91f30b932ad56cd82398d872d4874facf84220 (diff) | |
download | external_llvm-8091524d98ca648c195224fab599f1c6afdd880a.zip external_llvm-8091524d98ca648c195224fab599f1c6afdd880a.tar.gz external_llvm-8091524d98ca648c195224fab599f1c6afdd880a.tar.bz2 |
Change LowerCallResult method so that CCValAssign::BCvt can be used with
f64 types. This is not used for anything yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70006 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/ARM/ARMISelLowering.cpp | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp index 52828e5..7704209 100644 --- a/lib/Target/ARM/ARMISelLowering.cpp +++ b/lib/Target/ARM/ARMISelLowering.cpp @@ -500,35 +500,35 @@ LowerCallResult(SDValue Chain, SDValue InFlag, CallSDNode *TheCall, for (unsigned i = 0; i != RVLocs.size(); ++i) { CCValAssign VA = RVLocs[i]; - // handle f64 as custom + SDValue Val; if (VA.needsCustom()) { - SDValue Lo = DAG.getCopyFromReg(Chain, dl, VA.getLocReg(), VA.getLocVT(), + // Handle f64 as custom. + SDValue Lo = DAG.getCopyFromReg(Chain, dl, VA.getLocReg(), MVT::i32, InFlag); Chain = Lo.getValue(1); InFlag = Lo.getValue(2); VA = RVLocs[++i]; // skip ahead to next loc - SDValue Hi = DAG.getCopyFromReg(Chain, dl, VA.getLocReg(), VA.getLocVT(), + SDValue Hi = DAG.getCopyFromReg(Chain, dl, VA.getLocReg(), MVT::i32, InFlag); Chain = Hi.getValue(1); InFlag = Hi.getValue(2); - ResultVals.push_back(DAG.getNode(ARMISD::FMDRR, dl, VA.getValVT(), Lo, - Hi)); + Val = DAG.getNode(ARMISD::FMDRR, dl, MVT::f64, Lo, Hi); } else { - SDValue Val = DAG.getCopyFromReg(Chain, dl, VA.getLocReg(), VA.getLocVT(), - InFlag); + Val = DAG.getCopyFromReg(Chain, dl, VA.getLocReg(), VA.getLocVT(), + InFlag); Chain = Val.getValue(1); InFlag = Val.getValue(2); + } - switch (VA.getLocInfo()) { - default: assert(0 && "Unknown loc info!"); - case CCValAssign::Full: break; - case CCValAssign::BCvt: - Val = DAG.getNode(ISD::BIT_CONVERT, dl, VA.getValVT(), Val); - break; - } - - ResultVals.push_back(Val); + switch (VA.getLocInfo()) { + default: assert(0 && "Unknown loc info!"); + case CCValAssign::Full: break; + case CCValAssign::BCvt: + Val = DAG.getNode(ISD::BIT_CONVERT, dl, VA.getValVT(), Val); + break; } + + ResultVals.push_back(Val); } // Merge everything together with a MERGE_VALUES node. |