mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
Abort AdjustBBOffsetsAfter early when possible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147685 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2d4a5bf817
commit
59ecaae7b6
@ -1035,14 +1035,22 @@ static bool BBIsJumpedOver(MachineBasicBlock *MBB) {
|
||||
#endif // NDEBUG
|
||||
|
||||
void ARMConstantIslands::AdjustBBOffsetsAfter(MachineBasicBlock *BB) {
|
||||
for(unsigned i = BB->getNumber() + 1, e = MF->getNumBlockIDs(); i < e; ++i) {
|
||||
unsigned BBNum = BB->getNumber();
|
||||
for(unsigned i = BBNum + 1, e = MF->getNumBlockIDs(); i < e; ++i) {
|
||||
// Get the offset and known bits at the end of the layout predecessor.
|
||||
// Include the alignment of the current block.
|
||||
unsigned LogAlign = MF->getBlockNumbered(i)->getAlignment();
|
||||
unsigned Offset = BBInfo[i - 1].postOffset(LogAlign);
|
||||
unsigned KnownBits = BBInfo[i - 1].postKnownBits(LogAlign);
|
||||
|
||||
// This is where block i begins.
|
||||
// This is where block i begins. Stop if the offset is already correct,
|
||||
// and we have updated 2 blocks. This is the maximum number of blocks
|
||||
// changed before calling this function.
|
||||
if (i > BBNum + 2 &&
|
||||
BBInfo[i].Offset == Offset &&
|
||||
BBInfo[i].KnownBits == KnownBits)
|
||||
break;
|
||||
|
||||
BBInfo[i].Offset = Offset;
|
||||
BBInfo[i].KnownBits = KnownBits;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user