mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-27 14:34:58 +00:00
Fix bug: Reassociate/2003-08-12-InfiniteLoop.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7792 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bb5395b586
commit
e9608e37fc
@ -126,12 +126,13 @@ bool Reassociate::ReassociateExpr(BinaryOperator *I) {
|
||||
if (LHSI->getOpcode() == I->getOpcode() && LHSI->use_size() == 1) {
|
||||
// If the rank of our current RHS is less than the rank of the LHS's LHS,
|
||||
// then we reassociate the two instructions...
|
||||
if (RHSRank < getRank(LHSI->getOperand(0))) {
|
||||
unsigned TakeOp = 0;
|
||||
if (BinaryOperator *IOp = dyn_cast<BinaryOperator>(LHSI->getOperand(0)))
|
||||
if (IOp->getOpcode() == LHSI->getOpcode())
|
||||
TakeOp = 1; // Hoist out non-tree portion
|
||||
|
||||
unsigned TakeOp = 0;
|
||||
if (BinaryOperator *IOp = dyn_cast<BinaryOperator>(LHSI->getOperand(0)))
|
||||
if (IOp->getOpcode() == LHSI->getOpcode())
|
||||
TakeOp = 1; // Hoist out non-tree portion
|
||||
|
||||
if (RHSRank < getRank(LHSI->getOperand(TakeOp))) {
|
||||
// Convert ((a + 12) + 10) into (a + (12 + 10))
|
||||
I->setOperand(0, LHSI->getOperand(TakeOp));
|
||||
LHSI->setOperand(TakeOp, RHS);
|
||||
|
Loading…
x
Reference in New Issue
Block a user