Skip to content

Commit 9d090b2

Browse files
committed
Don't check hasAllowReassoc(); check only hasAllowContract()
Removed folding from foldFMulReassoc() that assumed hasAllowReassoc() Moved folding back in visitFMul()
1 parent ac3ab9a commit 9d090b2

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -947,14 +947,6 @@ Instruction *InstCombinerImpl::foldFMulReassoc(BinaryOperator &I) {
947947
return BinaryOperator::CreateFMulFMF(XX, Y, &I);
948948
}
949949

950-
// tan(X) * cos(X) -> sin(X)
951-
if (match(&I,
952-
m_c_FMul(m_OneUse(m_Intrinsic<Intrinsic::tan>(m_Value(X))),
953-
m_OneUse(m_Intrinsic<Intrinsic::cos>(m_Deferred(X)))))) {
954-
Value *Sin = Builder.CreateUnaryIntrinsic(Intrinsic::sin, X, &I);
955-
return replaceInstUsesWith(I, Sin);
956-
}
957-
958950
return nullptr;
959951
}
960952

@@ -1081,6 +1073,14 @@ Instruction *InstCombinerImpl::visitFMul(BinaryOperator &I) {
10811073
return Result;
10821074
}
10831075

1076+
// tan(X) * cos(X) -> sin(X)
1077+
if (I.hasAllowContract() && match(&I,
1078+
m_c_FMul(m_OneUse(m_Intrinsic<Intrinsic::tan>(m_Value(X))),
1079+
m_OneUse(m_Intrinsic<Intrinsic::cos>(m_Deferred(X)))))) {
1080+
Value *Sin = Builder.CreateUnaryIntrinsic(Intrinsic::sin, X, &I);
1081+
return replaceInstUsesWith(I, Sin);
1082+
}
1083+
10841084
return nullptr;
10851085
}
10861086

0 commit comments

Comments
 (0)