summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2018-08-07 20:14:27 +0000
committerSanjay Patel <spatel@rotateright.com>2018-08-07 20:14:27 +0000
commitf7a8fb2dee2ddbe16f6a9fe1c4d7fbb03358ed1d (patch)
treee89f3dd5b84cc7090f8e76708115bf05338cff06 /llvm/lib/Analysis
parent1662647995ac1e7e96d70879d931963f013d3584 (diff)
downloadbcm5719-llvm-f7a8fb2dee2ddbe16f6a9fe1c4d7fbb03358ed1d.tar.gz
bcm5719-llvm-f7a8fb2dee2ddbe16f6a9fe1c4d7fbb03358ed1d.zip
[InstSimplify] fold fsub+fsub with common operand
llvm-svn: 339171
Diffstat (limited to 'llvm/lib/Analysis')
-rw-r--r--llvm/lib/Analysis/InstructionSimplify.cpp5
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;
}
OpenPOWER on IntegriCloud