Fix InstCombine/2006-04-01-InfLoop.ll

llvm-svn: 27330
This commit is contained in:
Chris Lattner 2006-04-01 22:05:01 +00:00
parent 11739f7589
commit 6cf4914fd4
1 changed files with 2 additions and 1 deletions

View File

@ -3008,7 +3008,8 @@ Instruction *InstCombiner::visitXor(BinaryOperator &I) {
} else if (Op0I->getOpcode() == Instruction::And && Op0I->hasOneUse()) {
if (Op0I->getOperand(0) == Op1) // (A&B)^A -> (B&A)^A
Op0I->swapOperands();
if (Op0I->getOperand(1) == Op1) { // (B&A)^A == ~B & A
if (Op0I->getOperand(1) == Op1 && // (B&A)^A == ~B & A
!isa<ConstantInt>(Op1)) { // Canonical form is (B&C)^C
Instruction *N = BinaryOperator::createNot(Op0I->getOperand(0), "tmp");
InsertNewInstBefore(N, I);
return BinaryOperator::createAnd(N, Op1);