]> granicus.if.org Git - llvm/commitdiff
[InstCombine] In visitXor, use m_Not on the instruction itself instead of looking...
authorCraig Topper <craig.topper@gmail.com>
Thu, 29 Jun 2017 00:07:08 +0000 (00:07 +0000)
committerCraig Topper <craig.topper@gmail.com>
Thu, 29 Jun 2017 00:07:08 +0000 (00:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306617 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/InstCombine/InstCombineAndOrXor.cpp

index d3d8cefe9735304d0c8cb484e33799a238d988d7..fe9844365bf4c0b97fa46553c1991124f7e4fd2d 100644 (file)
@@ -2456,10 +2456,9 @@ Instruction *InstCombiner::visitXor(BinaryOperator &I) {
     }
   }
 
-  // xor (cmp A, B), true = not (cmp A, B) = !cmp A, B
+  // not (cmp A, B) = !cmp A, B
   ICmpInst::Predicate Pred;
-  if (match(Op0, m_OneUse(m_Cmp(Pred, m_Value(), m_Value()))) &&
-      match(Op1, m_AllOnes())) {
+  if (match(&I, m_Not(m_OneUse(m_Cmp(Pred, m_Value(), m_Value()))))) {
     cast<CmpInst>(Op0)->setPredicate(CmpInst::getInversePredicate(Pred));
     return replaceInstUsesWith(I, Op0);
   }