mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
misched: When querying RegisterPressureTracker, always save current and max pressure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158340 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4487479543
commit
0eb3a3524e
@ -249,19 +249,22 @@ public:
|
||||
|
||||
/// Get the pressure of each PSet after traversing this instruction bottom-up.
|
||||
void getUpwardPressure(const MachineInstr *MI,
|
||||
std::vector<unsigned> &PressureResult);
|
||||
std::vector<unsigned> &PressureResult,
|
||||
std::vector<unsigned> &MaxPressureResult);
|
||||
|
||||
/// Get the pressure of each PSet after traversing this instruction top-down.
|
||||
void getDownwardPressure(const MachineInstr *MI,
|
||||
std::vector<unsigned> &PressureResult);
|
||||
std::vector<unsigned> &PressureResult,
|
||||
std::vector<unsigned> &MaxPressureResult);
|
||||
|
||||
void getPressureAfterInst(const MachineInstr *MI,
|
||||
std::vector<unsigned> &PressureResult) {
|
||||
std::vector<unsigned> &PressureResult,
|
||||
std::vector<unsigned> &MaxPressureResult) {
|
||||
if (isTopClosed())
|
||||
return getUpwardPressure(MI, PressureResult);
|
||||
return getUpwardPressure(MI, PressureResult, MaxPressureResult);
|
||||
|
||||
assert(isBottomClosed() && "Uninitialized pressure tracker");
|
||||
return getDownwardPressure(MI, PressureResult);
|
||||
return getDownwardPressure(MI, PressureResult, MaxPressureResult);
|
||||
}
|
||||
|
||||
protected:
|
||||
|
@ -811,25 +811,31 @@ getMaxDownwardPressureDelta(const MachineInstr *MI, RegPressureDelta &Delta,
|
||||
/// Get the pressure of each PSet after traversing this instruction bottom-up.
|
||||
void RegPressureTracker::
|
||||
getUpwardPressure(const MachineInstr *MI,
|
||||
std::vector<unsigned> &PressureResult) {
|
||||
std::vector<unsigned> &PressureResult,
|
||||
std::vector<unsigned> &MaxPressureResult) {
|
||||
// Snapshot pressure.
|
||||
PressureResult = CurrSetPressure;
|
||||
MaxPressureResult = P.MaxSetPressure;
|
||||
|
||||
bumpUpwardPressure(MI);
|
||||
|
||||
// Current pressure becomes the result. Restore current pressure.
|
||||
P.MaxSetPressure.swap(MaxPressureResult);
|
||||
CurrSetPressure.swap(PressureResult);
|
||||
}
|
||||
|
||||
/// Get the pressure of each PSet after traversing this instruction top-down.
|
||||
void RegPressureTracker::
|
||||
getDownwardPressure(const MachineInstr *MI,
|
||||
std::vector<unsigned> &PressureResult) {
|
||||
std::vector<unsigned> &PressureResult,
|
||||
std::vector<unsigned> &MaxPressureResult) {
|
||||
// Snapshot pressure.
|
||||
PressureResult = CurrSetPressure;
|
||||
MaxPressureResult = P.MaxSetPressure;
|
||||
|
||||
bumpDownwardPressure(MI);
|
||||
|
||||
// Current pressure becomes the result. Restore current pressure.
|
||||
P.MaxSetPressure.swap(MaxPressureResult);
|
||||
CurrSetPressure.swap(PressureResult);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user