From 582fe6b0caf7361029b9ce539775220391ed858c Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Mon, 1 Dec 2008 08:09:47 +0000 Subject: Use m_Specific() instead of double matching. llvm-svn: 60341 --- .../lib/Transforms/Scalar/InstructionCombining.cpp | 30 +++++++++------------- 1 file changed, 12 insertions(+), 18 deletions(-) (limited to 'llvm/lib/Transforms/Scalar/InstructionCombining.cpp') diff --git a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp index aae1e14f9db..47d9c25d5b6 100644 --- a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp @@ -4603,28 +4603,22 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) { if (Instruction *Match = MatchSelectFromAndOr(D, A, B, C)) return Match; - V1 = V2 = 0; - // ((A&~B)|(~A&B)) -> A^B - if ((match(C, m_Not(m_Value(V1))) && - match(B, m_Not(m_Value(V2))))) - if (V1 == D && V2 == A) - return BinaryOperator::CreateXor(V1, V2); + if ((match(C, m_Not(m_Specific(D))) && + match(B, m_Not(m_Specific(A))))) + return BinaryOperator::CreateXor(A, D); // ((~B&A)|(~A&B)) -> A^B - if ((match(A, m_Not(m_Value(V1))) && - match(B, m_Not(m_Value(V2))))) - if (V1 == D && V2 == C) - return BinaryOperator::CreateXor(V1, V2); + if ((match(A, m_Not(m_Specific(D))) && + match(B, m_Not(m_Specific(C))))) + return BinaryOperator::CreateXor(C, D); // ((A&~B)|(B&~A)) -> A^B - if ((match(C, m_Not(m_Value(V1))) && - match(D, m_Not(m_Value(V2))))) - if (V1 == B && V2 == A) - return BinaryOperator::CreateXor(V1, V2); + if ((match(C, m_Not(m_Specific(B))) && + match(D, m_Not(m_Specific(A))))) + return BinaryOperator::CreateXor(A, B); // ((~B&A)|(B&~A)) -> A^B - if ((match(A, m_Not(m_Value(V1))) && - match(D, m_Not(m_Value(V2))))) - if (V1 == B && V2 == C) - return BinaryOperator::CreateXor(V1, V2); + if ((match(A, m_Not(m_Specific(B))) && + match(D, m_Not(m_Specific(C))))) + return BinaryOperator::CreateXor(C, B); } // (X >> Z) | (Y >> Z) -> (X|Y) >> Z for all shifts. -- cgit v1.2.3