Change LowerCallResult method so that CCValAssign::BCvt can be used with
authorBob Wilson <bob.wilson@apple.com>
Sat, 25 Apr 2009 00:33:20 +0000 (00:33 +0000)
committerBob Wilson <bob.wilson@apple.com>
Sat, 25 Apr 2009 00:33:20 +0000 (00:33 +0000)
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

lib/Target/ARM/ARMISelLowering.cpp

index 52828e5c56e36f3377eb59e60e717364dc086aaa..7704209190f7c06038e923a6cd3a49ad01fc79bf 100644 (file)
@@ -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.