Do not promote float params to double in varargs
authorDale Johannesen <dalej@apple.com>
Wed, 12 Mar 2008 23:40:01 +0000 (23:40 +0000)
committerDale Johannesen <dalej@apple.com>
Wed, 12 Mar 2008 23:40:01 +0000 (23:40 +0000)
calls here.  This was done earlier for params in
the varargs part of the params; any float params
that survive to here are in the non-varargs part,
and must not be promoted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48310 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCISelLowering.cpp

index cd87bba7b258df7d50bb7c2b38dd46af77077d24..8138b78d5e37fd483f2249a366db42845546b7d1 100644 (file)
@@ -1898,12 +1898,6 @@ SDOperand PPCTargetLowering::LowerCALL(SDOperand Op, SelectionDAG &DAG,
       break;
     case MVT::f32:
     case MVT::f64:
-      if (isVarArg) {
-        // Float varargs need to be promoted to double.
-        if (Arg.getValueType() == MVT::f32)
-          Arg = DAG.getNode(ISD::FP_EXTEND, MVT::f64, Arg);
-      }
-    
       if (FPR_idx != NumFPRs) {
         RegsToPass.push_back(std::make_pair(FPR[FPR_idx++], Arg));