mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 23:32:27 +00:00
Fix for r180193 - MI Sched: eliminate local vreg.
Fixes PR15838. Need to check for blocks with nothing but dbg.value. I'm not sure how to force this situation with a unit test. I tried to reduce the test case in PR15838 (1k lines of metadata) but gave up. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180227 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2871ba90a3
commit
a264a20277
@ -933,6 +933,8 @@ namespace {
|
||||
class CopyConstrain : public ScheduleDAGMutation {
|
||||
// Transient state.
|
||||
SlotIndex RegionBeginIdx;
|
||||
// RegionEndIdx is the slot index of the last non-debug instruction in the
|
||||
// scheduling region. So we may have RegionBeginIdx == RegionEndIdx.
|
||||
SlotIndex RegionEndIdx;
|
||||
public:
|
||||
CopyConstrain(const TargetInstrInfo *, const TargetRegisterInfo *) {}
|
||||
@ -1082,8 +1084,10 @@ void CopyConstrain::constrainLocalCopy(SUnit *CopySU, ScheduleDAGMI *DAG) {
|
||||
/// \brief Callback from DAG postProcessing to create weak edges to encourage
|
||||
/// copy elimination.
|
||||
void CopyConstrain::apply(ScheduleDAGMI *DAG) {
|
||||
RegionBeginIdx = DAG->getLIS()->getInstructionIndex(
|
||||
&*nextIfDebug(DAG->begin(), DAG->end()));
|
||||
MachineBasicBlock::iterator FirstPos = nextIfDebug(DAG->begin(), DAG->end());
|
||||
if (FirstPos == DAG->end())
|
||||
return;
|
||||
RegionBeginIdx = DAG->getLIS()->getInstructionIndex(&*FirstPos);
|
||||
RegionEndIdx = DAG->getLIS()->getInstructionIndex(
|
||||
&*priorNonDebug(DAG->end(), DAG->begin()));
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user