[llvm] 51e420c - [InstCombine] add FMF guard to builder in fptrunc transform; NFC
Sanjay Patel via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 5 07:55:54 PST 2019
Author: Sanjay Patel
Date: 2019-12-05T10:55:07-05:00
New Revision: 51e420c27e2dc493bd71a6305ffb4d8acb401755
URL: https://github.com/llvm/llvm-project/commit/51e420c27e2dc493bd71a6305ffb4d8acb401755
DIFF: https://github.com/llvm/llvm-project/commit/51e420c27e2dc493bd71a6305ffb4d8acb401755.diff
LOG: [InstCombine] add FMF guard to builder in fptrunc transform; NFC
This makes no difference currently because we don't apply FMF
to FP casts, but that may change.
This could also be a place to add a fold for select with fptrunc,
so it will make that patch easier/smaller.
Added:
Modified:
llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
index 2171c819fd9e..53bcaeb98b42 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
@@ -1622,6 +1622,11 @@ Instruction *InstCombiner::visitFPTrunc(FPTruncInst &FPT) {
Value *X;
Instruction *Op = dyn_cast<Instruction>(FPT.getOperand(0));
if (Op && Op->hasOneUse()) {
+ // FIXME: The FMF should propagate from the fptrunc, not the source op.
+ IRBuilder<>::FastMathFlagGuard FMFG(Builder);
+ if (isa<FPMathOperator>(Op))
+ Builder.setFastMathFlags(Op->getFastMathFlags());
+
if (match(Op, m_FNeg(m_Value(X)))) {
Value *InnerTrunc = Builder.CreateFPTrunc(X, Ty);
More information about the llvm-commits
mailing list