diff options
author | Vyacheslav Klochkov <vyacheslav.n.klochkov@gmail.com> | 2016-11-22 20:23:04 +0000 |
---|---|---|
committer | Vyacheslav Klochkov <vyacheslav.n.klochkov@gmail.com> | 2016-11-22 20:23:04 +0000 |
commit | 68a677ae5bacec56dff71cded32a376fe06b9fe0 (patch) | |
tree | 88c4ac151d067994d6d43cb16c7a286a0372f4a0 /llvm/lib/Transforms/Scalar/Reassociate.cpp | |
parent | b3c3d149b98006ce217f50baa28783fd5d0105e1 (diff) | |
download | bcm5719-llvm-68a677ae5bacec56dff71cded32a376fe06b9fe0.tar.gz bcm5719-llvm-68a677ae5bacec56dff71cded32a376fe06b9fe0.zip |
Fixed the lost FastMathFlags in Reassociate optimization.
Reviewer: Hal Finkel.
Differential Revision: https://reviews.llvm.org/D26957
llvm-svn: 287695
Diffstat (limited to 'llvm/lib/Transforms/Scalar/Reassociate.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/Reassociate.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/Reassociate.cpp b/llvm/lib/Transforms/Scalar/Reassociate.cpp index 40c1e3717a2..181a324861e 100644 --- a/llvm/lib/Transforms/Scalar/Reassociate.cpp +++ b/llvm/lib/Transforms/Scalar/Reassociate.cpp @@ -1778,6 +1778,12 @@ Value *ReassociatePass::OptimizeMul(BinaryOperator *I, return nullptr; // All distinct factors, so nothing left for us to do. IRBuilder<> Builder(I); + // The reassociate transformation for FP operations is performed only + // if unsafe algebra is permitted by FastMathFlags. Propagate those flags + // to the newly generated operations. + if (auto FPI = dyn_cast<FPMathOperator>(I)) + Builder.setFastMathFlags(FPI->getFastMathFlags()); + Value *V = buildMinimalMultiplyDAG(Builder, Factors); if (Ops.empty()) return V; |