[llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
Chris Lattner
sabre at nondot.org
Tue Oct 31 20:56:01 PST 2006
Changes in directory llvm/lib/Transforms/Scalar:
InstructionCombining.cpp updated: 1.530 -> 1.531
---
Log message:
Fix a bug in the previous patch
---
Diffs of the changes: (+6 -3)
InstructionCombining.cpp | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.530 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.531
--- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.530 Tue Oct 31 22:51:18 2006
+++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Tue Oct 31 22:55:47 2006
@@ -6787,13 +6787,16 @@
Instruction *FirstInst = cast<Instruction>(PN.getIncomingValue(0));
assert(isa<BinaryOperator>(FirstInst) || isa<ShiftInst>(FirstInst));
unsigned Opc = FirstInst->getOpcode();
+ const Type *LHSType = FirstInst->getOperand(0)->getType();
// Scan to see if all operands are the same opcode, all have one use, and all
// kill their operands (i.e. the operands have one use).
- unsigned NumValues = PN.getNumIncomingValues();
- for (unsigned i = 0; i != NumValues; ++i) {
+ for (unsigned i = 0; i != PN.getNumIncomingValues(); ++i) {
Instruction *I = dyn_cast<Instruction>(PN.getIncomingValue(i));
- if (!I || I->getOpcode() != Opc || !I->hasOneUse())
+ if (!I || I->getOpcode() != Opc || !I->hasOneUse() ||
+ // Verify type of the LHS matches so we don't fold setcc's of different
+ // types.
+ I->getOperand(0)->getType() != LHSType)
return 0;
}
More information about the llvm-commits
mailing list