mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-14 02:33:53 +00:00
be slightly more subtle about skipping dbg_value instructions; otherwise, if a
dbg_value immediately follows a sequence of ldr/str instructions that should be combined into an ldm/stm and is the last instruction in the block, then combine may end up being skipped. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105758 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fe633f0ed6
commit
db03adb346
@ -1024,10 +1024,6 @@ bool ARMLoadStoreOpt::LoadStoreMultipleOpti(MachineBasicBlock &MBB) {
|
|||||||
RS->enterBasicBlock(&MBB);
|
RS->enterBasicBlock(&MBB);
|
||||||
MachineBasicBlock::iterator MBBI = MBB.begin(), E = MBB.end();
|
MachineBasicBlock::iterator MBBI = MBB.begin(), E = MBB.end();
|
||||||
while (MBBI != E) {
|
while (MBBI != E) {
|
||||||
if (MBBI->isDebugValue()) {
|
|
||||||
++MBBI;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (FixInvalidRegPairOp(MBB, MBBI))
|
if (FixInvalidRegPairOp(MBB, MBBI))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -1094,7 +1090,12 @@ bool ARMLoadStoreOpt::LoadStoreMultipleOpti(MachineBasicBlock &MBB) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Advance) {
|
if (MBBI->isDebugValue()) {
|
||||||
|
++MBBI;
|
||||||
|
if (MBBI == E)
|
||||||
|
// Reach the end of the block, try merging the memory instructions.
|
||||||
|
TryMerge = true;
|
||||||
|
} else if (Advance) {
|
||||||
++Position;
|
++Position;
|
||||||
++MBBI;
|
++MBBI;
|
||||||
if (MBBI == E)
|
if (MBBI == E)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user