mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-21 19:32:16 +00:00
Fix a bug in the previous patch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31342 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7da52b295b
commit
a90a24c623
@ -6787,13 +6787,16 @@ Instruction *InstCombiner::FoldPHIArgBinOpIntoPHI(PHINode &PN) {
|
|||||||
Instruction *FirstInst = cast<Instruction>(PN.getIncomingValue(0));
|
Instruction *FirstInst = cast<Instruction>(PN.getIncomingValue(0));
|
||||||
assert(isa<BinaryOperator>(FirstInst) || isa<ShiftInst>(FirstInst));
|
assert(isa<BinaryOperator>(FirstInst) || isa<ShiftInst>(FirstInst));
|
||||||
unsigned Opc = FirstInst->getOpcode();
|
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
|
// 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).
|
// kill their operands (i.e. the operands have one use).
|
||||||
unsigned NumValues = PN.getNumIncomingValues();
|
for (unsigned i = 0; i != PN.getNumIncomingValues(); ++i) {
|
||||||
for (unsigned i = 0; i != NumValues; ++i) {
|
|
||||||
Instruction *I = dyn_cast<Instruction>(PN.getIncomingValue(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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user