[InstCombine] propagate fast-math-flags when folding fcmp+fneg, part 2

llvm-svn: 346238
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
index 975cb83..c1c904b 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
@@ -5467,9 +5467,10 @@
   Value *X, *Y;
   if (match(Op0, m_FNeg(m_Value(X)))) {
     if (match(Op1, m_FNeg(m_Value(Y)))) {
-      // FIXME: Drops FMF.
       // fcmp pred (fneg X), (fneg Y) -> fcmp swap(pred) X, Y
-      return new FCmpInst(I.getSwappedPredicate(), X, Y);
+      Instruction *NewFCmp = new FCmpInst(I.getSwappedPredicate(), X, Y);
+      NewFCmp->copyFastMathFlags(&I);
+      return NewFCmp;
     }
 
     Constant *C;