Changes in directory llvm/lib/Transforms/Scalar:
PredicateSimplifier.cpp updated: 1.21 -> 1.22 --- Log message: Handle "if ((x|y) != 0)" for ints like we do for bools. Fixes missed optimization opportunity pointed out by Chris Lattner. --- Diffs of the changes: (+13 -10) PredicateSimplifier.cpp | 23 +++++++++++++---------- 1 files changed, 13 insertions(+), 10 deletions(-) Index: llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp diff -u llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp:1.21 llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp:1.22 --- llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp:1.21 Sun Oct 22 14:53:27 2006 +++ llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp Sun Oct 22 16:36:41 2006 @@ -334,32 +334,35 @@ if (V1 == ConstantBool::getFalse()) add(Opcode, BO->getOperand(0), BO->getOperand(1), true); break; - case Instruction::And: - if (V1 == ConstantBool::getTrue()) { + case Instruction::And: { + ConstantIntegral *CI = dyn_cast<ConstantIntegral>(V1); + if (CI && CI->isAllOnesValue()) { add(Opcode, V1, BO->getOperand(0), false); add(Opcode, V1, BO->getOperand(1), false); } - break; - case Instruction::Or: - if (V1 == ConstantBool::getFalse()) { + } break; + case Instruction::Or: { + ConstantIntegral *CI = dyn_cast<ConstantIntegral>(V1); + if (CI && CI->isNullValue()) { add(Opcode, V1, BO->getOperand(0), false); add(Opcode, V1, BO->getOperand(1), false); } - break; - case Instruction::Xor: - if (V1 == ConstantBool::getTrue()) { + } break; + case Instruction::Xor: { + ConstantIntegral *CI = dyn_cast<ConstantIntegral>(V1); + if (CI->isAllOnesValue()) { if (BO->getOperand(0) == V1) add(Opcode, ConstantBool::getFalse(), BO->getOperand(1), false); if (BO->getOperand(1) == V1) add(Opcode, ConstantBool::getFalse(), BO->getOperand(0), false); } - if (V1 == ConstantBool::getFalse()) { + if (CI->isNullValue()) { if (BO->getOperand(0) == ConstantBool::getTrue()) add(Opcode, ConstantBool::getTrue(), BO->getOperand(1), false); if (BO->getOperand(1) == ConstantBool::getTrue()) add(Opcode, ConstantBool::getTrue(), BO->getOperand(0), false); } - break; + } break; default: break; } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits