mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 23:32:27 +00:00
Sorting is now handled by both linearscan and iterative scan so live
intervals need not be sorted anymore. Removing this redundant step improves LiveIntervals running time by 5% on 176.gcc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15106 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
82c24fba8a
commit
d3014edc51
@ -159,7 +159,6 @@ bool LiveIntervals::runOnMachineFunction(MachineFunction &fn) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
intervals_.sort();
|
|
||||||
DEBUG(std::cerr << "********** INTERVALS **********\n");
|
DEBUG(std::cerr << "********** INTERVALS **********\n");
|
||||||
DEBUG(std::copy(intervals_.begin(), intervals_.end(),
|
DEBUG(std::copy(intervals_.begin(), intervals_.end(),
|
||||||
std::ostream_iterator<LiveInterval>(std::cerr, "\n")));
|
std::ostream_iterator<LiveInterval>(std::cerr, "\n")));
|
||||||
@ -263,15 +262,6 @@ std::vector<LiveInterval*> LiveIntervals::addIntervalsForSpills(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: This method MUST return intervals in sorted order. If a
|
|
||||||
// particular machine instruction both uses and defines the vreg being
|
|
||||||
// spilled (e.g., vr = vr + 1) and if the def is processed before the
|
|
||||||
// use, the list ends up not sorted.
|
|
||||||
//
|
|
||||||
// The proper way to fix this is to process all uses of the vreg before we
|
|
||||||
// process any defs. However, this would require refactoring the above
|
|
||||||
// blob of code, which I'm not feeling up to right now.
|
|
||||||
std::sort(added.begin(), added.end(), less_ptr<LiveInterval>());
|
|
||||||
return added;
|
return added;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user