mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 02:33:33 +00:00
Fix another case where debug info interferes with
an optimization. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66288 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2ee7f8381f
commit
3a56d14641
@ -385,7 +385,7 @@ static bool DominatesMergePoint(Value *V, BasicBlock *BB,
|
||||
// only uses stuff defined outside of the condition. If so, hoist it out.
|
||||
switch (I->getOpcode()) {
|
||||
default: return false; // Cannot hoist this out safely.
|
||||
case Instruction::Load:
|
||||
case Instruction::Load: {
|
||||
// We can hoist loads that are non-volatile and obviously cannot trap.
|
||||
if (cast<LoadInst>(I)->isVolatile())
|
||||
return false;
|
||||
@ -397,9 +397,13 @@ static bool DominatesMergePoint(Value *V, BasicBlock *BB,
|
||||
// Finally, we have to check to make sure there are no instructions
|
||||
// before the load in its basic block, as we are going to hoist the loop
|
||||
// out to its predecessor.
|
||||
if (PBB->begin() != BasicBlock::iterator(I))
|
||||
BasicBlock::iterator IP = PBB->begin();
|
||||
while (isa<DbgInfoIntrinsic>(IP))
|
||||
IP++;
|
||||
if (IP != BasicBlock::iterator(I))
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
case Instruction::Add:
|
||||
case Instruction::Sub:
|
||||
case Instruction::And:
|
||||
|
Loading…
x
Reference in New Issue
Block a user