diff options
author | Chris Lattner <sabre@nondot.org> | 2004-12-12 06:03:06 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-12-12 06:03:06 +0000 |
commit | 077f1a82923fee977569df5f2bd4ba914e6ee22e (patch) | |
tree | eff177fb8cb93cfc9ae40ea5ef837d9ac60fed1e | |
parent | 6a8c46cde3bb3a982a8a928ebae8d21d0aba32a1 (diff) |
Though the previous xform applies to literally dozens (hundreds?) of variables
in SPEC, the subsequent optimziations that we are after don't play with
with FP values, so disable this xform for them. Really we just don't want
stuff like:
double G; (always 0 or 412312.312)
= G;
turning into:
bool G_b;
= G_b ? 412312.312 : 0;
We'd rather just do the load.
-Chris
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18819 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Transforms/IPO/GlobalOpt.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp index 6309c3b508..5ae693b65b 100644 --- a/lib/Transforms/IPO/GlobalOpt.cpp +++ b/lib/Transforms/IPO/GlobalOpt.cpp @@ -954,7 +954,8 @@ bool GlobalOpt::ProcessInternalGlobal(GlobalVariable *GV, // Otherwise, if the global was not a boolean, we can shrink it to be a // boolean. if (Constant *SOVConstant = dyn_cast<Constant>(GS.StoredOnceValue)) - if (GV->getType()->getElementType() != Type::BoolTy) { + if (GV->getType()->getElementType() != Type::BoolTy && + !GV->getType()->getElementType()->isFloatingPoint()) { DEBUG(std::cerr << " *** SHRINKING TO BOOL: " << *GV); ShrinkGlobalToBoolean(GV, SOVConstant); ++NumShrunkToBool; |