Improve comment, pass in the original VT so that we can shrink a long double constant
authorChris Lattner <sabre@nondot.org>
Wed, 5 Mar 2008 06:46:58 +0000 (06:46 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 5 Mar 2008 06:46:58 +0000 (06:46 +0000)
all the way to float, not stopping at double.

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

lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

index 4129332f04709a8c8216a035bb4be43f56ab4e83..82324cd5b992007d38765efbd3683cd952665485 100644 (file)
@@ -486,7 +486,9 @@ static SDOperand ExpandConstantFP(ConstantFPSDNode *CFP, bool UseCP,
   // If a FP immediate is precise when represented as a float and if the
   // target can do an extending load from float to double, we put it into
   // the constant pool as a float, even if it's is statically typed as a
-  // double.
+  // double.  This shrinks FP constants and canonicalizes them for targets where
+  // an FP extending load is the same cost as a normal load (such as on the x87
+  // fp stack or PPC FP unit).
   MVT::ValueType VT = CFP->getValueType(0);
   ConstantFP *LLVMC = ConstantFP::get(MVT::getTypeForValueType(VT),
                                       CFP->getValueAPF());
@@ -505,7 +507,7 @@ static SDOperand ExpandConstantFP(ConstantFPSDNode *CFP, bool UseCP,
         // Only do this if the target has a native EXTLOAD instruction from
         // smaller type.
         TLI.isLoadXLegal(ISD::EXTLOAD, SVT) &&
-        TLI.ShouldShrinkFPConstant(VT)) {
+        TLI.ShouldShrinkFPConstant(OrigVT)) {
       const Type *SType = MVT::getTypeForValueType(SVT);
       LLVMC = cast<ConstantFP>(ConstantExpr::getFPTrunc(LLVMC, SType));
       VT = SVT;