[llvm] r363998 - [Reassociate] Remove bogus assert reported in PR42349.
Cameron McInally via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 20 16:03:55 PDT 2019
Author: mcinally
Date: Thu Jun 20 16:03:55 2019
New Revision: 363998
URL: http://llvm.org/viewvc/llvm-project?rev=363998&view=rev
Log:
[Reassociate] Remove bogus assert reported in PR42349.
Also, add a FIXME for the unsafe transform on a unary FNeg. A unary FNeg can only be transformed to a FMul by -1.0 when the nnan flag is present. The unary FNeg project is a WIP, so the unsafe transformation is acceptable until that work is complete.
The bogus assert with introduced in D63445.
Added:
llvm/trunk/test/Transforms/Reassociate/pr42349.ll
Modified:
llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp
Modified: llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp?rev=363998&r1=363997&r2=363998&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp Thu Jun 20 16:03:55 2019
@@ -268,11 +268,7 @@ static BinaryOperator *CreateNeg(Value *
static BinaryOperator *LowerNegateToMultiply(Instruction *Neg) {
assert((isa<UnaryOperator>(Neg) || isa<BinaryOperator>(Neg)) &&
"Expected a Negate!");
- // It's not safe to lower a unary FNeg into a FMul by -1.0. However,
- // we can only reach this function with fast flags set, so it's
- // safe to do with nnan.
- assert((!isa<FPMathOperator>(Neg) || Neg->isFast()) &&
- "Expecting FastMathFlags!");
+ // FIXME: It's not safe to lower a unary FNeg into a FMul by -1.0.
unsigned OpNo = isa<BinaryOperator>(Neg) ? 1 : 0;
Type *Ty = Neg->getType();
Constant *NegOne = Ty->isIntOrIntVectorTy() ?
Added: llvm/trunk/test/Transforms/Reassociate/pr42349.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Reassociate/pr42349.ll?rev=363998&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/Reassociate/pr42349.ll (added)
+++ llvm/trunk/test/Transforms/Reassociate/pr42349.ll Thu Jun 20 16:03:55 2019
@@ -0,0 +1,18 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt < %s -reassociate -S | FileCheck %s
+
+define float @wibble(float %tmp6) #0 {
+; CHECK-LABEL: @wibble(
+; CHECK-NEXT: bb:
+; CHECK-NEXT: [[TMP7:%.*]] = fmul float [[TMP6:%.*]], -1.000000e+00
+; CHECK-NEXT: [[TMP0:%.*]] = fsub float -0.000000e+00, 0.000000e+00
+; CHECK-NEXT: [[TMP9:%.*]] = fmul fast float [[TMP6]], 0xFFF0000000000000
+; CHECK-NEXT: ret float [[TMP9]]
+;
+bb:
+ %tmp7 = fsub float -0.000000e+00, %tmp6
+ %tmp9 = fmul fast float %tmp7, 0x7FF0000000000000
+ ret float %tmp9
+}
+
+attributes #0 = { "use-soft-float"="false" }
More information about the llvm-commits
mailing list