diff options
author | Sanjay Patel <spatel@rotateright.com> | 2018-08-07 20:14:27 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2018-08-07 20:14:27 +0000 |
commit | f7a8fb2dee2ddbe16f6a9fe1c4d7fbb03358ed1d (patch) | |
tree | e89f3dd5b84cc7090f8e76708115bf05338cff06 /llvm/lib/Analysis/InstructionSimplify.cpp | |
parent | 1662647995ac1e7e96d70879d931963f013d3584 (diff) | |
download | bcm5719-llvm-f7a8fb2dee2ddbe16f6a9fe1c4d7fbb03358ed1d.tar.gz bcm5719-llvm-f7a8fb2dee2ddbe16f6a9fe1c4d7fbb03358ed1d.zip |
[InstSimplify] fold fsub+fsub with common operand
llvm-svn: 339171
Diffstat (limited to 'llvm/lib/Analysis/InstructionSimplify.cpp')
-rw-r--r-- | llvm/lib/Analysis/InstructionSimplify.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp index 02137a51844..d0794364a73 100644 --- a/llvm/lib/Analysis/InstructionSimplify.cpp +++ b/llvm/lib/Analysis/InstructionSimplify.cpp @@ -4396,6 +4396,11 @@ static Value *SimplifyFSubInst(Value *Op0, Value *Op1, FastMathFlags FMF, if (FMF.noNaNs() && Op0 == Op1) return Constant::getNullValue(Op0->getType()); + // Y - (Y - X) --> X + if (FMF.noSignedZeros() && FMF.allowReassoc() && + match(Op1, m_FSub(m_Specific(Op0), m_Value(X)))) + return X; + return nullptr; } |