mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-17 23:44:43 +00:00
Fix InstCombine/2006-04-01-InfLoop.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27330 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ff1a14aba9
commit
ae1ab3989c
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user