diff options
Diffstat (limited to 'llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp')
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp index e8e78d2e652..62493decb4a 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp @@ -5483,9 +5483,12 @@ Instruction *InstCombiner::visitFCmpInst(FCmpInst &I) { Fabs.clearSign(); if (!Lossy && ((Fabs.compare(APFloat::getSmallestNormalized(FPSem)) != - APFloat::cmpLessThan) || Fabs.isZero())) - // TODO: Propagate FMF. - return new FCmpInst(Pred, X, ConstantFP::get(C->getContext(), F)); + APFloat::cmpLessThan) || Fabs.isZero())) { + Instruction *NewFCmp = + new FCmpInst(Pred, X, ConstantFP::get(C->getContext(), F)); + NewFCmp->copyFastMathFlags(&I); + return NewFCmp; + } } } |