[InstSimplify] fold fadd+fsub with common operand

llvm-svn: 339174
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp
index d0794364..22ced5a 100644
--- a/llvm/lib/Analysis/InstructionSimplify.cpp
+++ b/llvm/lib/Analysis/InstructionSimplify.cpp
@@ -4397,8 +4397,10 @@
     return Constant::getNullValue(Op0->getType());
 
   // Y - (Y - X) --> X
+  // (X + Y) - Y --> X
   if (FMF.noSignedZeros() && FMF.allowReassoc() &&
-      match(Op1, m_FSub(m_Specific(Op0), m_Value(X))))
+      (match(Op1, m_FSub(m_Specific(Op0), m_Value(X))) ||
+       match(Op0, m_c_FAdd(m_Specific(Op1), m_Value(X)))))
     return X;
 
   return nullptr;