From aa2acbbbf06348f20274f4eeb77f9761c654a589 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 5 Mar 2008 06:46:58 +0000 Subject: [PATCH] Improve comment, pass in the original VT so that we can shrink a long double constant 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 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 4129332f047..82324cd5b99 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -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(ConstantExpr::getFPTrunc(LLVMC, SType)); VT = SVT;