diff options
| -rw-r--r-- | llvm/lib/VMCore/ConstantFolding.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/VMCore/ConstantFolding.cpp b/llvm/lib/VMCore/ConstantFolding.cpp index 8cb1c074534..802c9f4011e 100644 --- a/llvm/lib/VMCore/ConstantFolding.cpp +++ b/llvm/lib/VMCore/ConstantFolding.cpp @@ -24,6 +24,7 @@ #include "llvm/DerivedTypes.h" #include "llvm/Function.h" #include "llvm/Support/GetElementPtrTypeIterator.h" +#include <limits> #include <cmath> using namespace llvm; @@ -471,9 +472,9 @@ struct DirectFPRules return ConstantClass::get(*Ty, Result); } static Constant *Div(const ConstantClass *V1, const ConstantClass *V2) { - if (V2->isExactlyValue(0.0)) return ConstantClass::get(*Ty, INFINITY); - if (V2->isExactlyValue(-0.0)) return ConstantClass::get(*Ty, -INFINITY); - if (V2->isNullValue()) return 0; + BuiltinType inf = std::numeric_limits<BuiltinType>::infinity(); + if (V2->isExactlyValue(0.0)) return ConstantClass::get(*Ty, inf); + if (V2->isExactlyValue(-0.0)) return ConstantClass::get(*Ty, -inf); BuiltinType R = (BuiltinType)V1->getValue() / (BuiltinType)V2->getValue(); return ConstantClass::get(*Ty, R); } |

