diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2012-04-29 18:52:56 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2012-04-29 18:52:56 +0000 |
commit | 2b8d0501b169c3ee81a9af1cb715e1be4d6a079e (patch) | |
tree | d19c9e989c83853bae2479ca0459f02bc51ec746 /lib/CodeGen/RegisterPressure.cpp | |
parent | 5fe019835c269ccbfe185276269bc53b3f9a7a86 (diff) | |
download | llvm-2b8d0501b169c3ee81a9af1cb715e1be4d6a079e.tar.gz llvm-2b8d0501b169c3ee81a9af1cb715e1be4d6a079e.tar.bz2 llvm-2b8d0501b169c3ee81a9af1cb715e1be4d6a079e.tar.xz |
RegisterPressure: ArrayRefize some functions for better readability. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155795 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/RegisterPressure.cpp')
-rw-r--r-- | lib/CodeGen/RegisterPressure.cpp | 70 |
1 files changed, 36 insertions, 34 deletions
diff --git a/lib/CodeGen/RegisterPressure.cpp b/lib/CodeGen/RegisterPressure.cpp index 7c8f20fb05..51c0cda769 100644 --- a/lib/CodeGen/RegisterPressure.cpp +++ b/lib/CodeGen/RegisterPressure.cpp @@ -59,28 +59,34 @@ void RegisterPressure::decrease(const TargetRegisterClass *RC, decreaseSetPressure(MaxSetPressure, RC, TRI); } -/// Increase the current pressure as impacted by this physical register and bump -/// the high water mark if needed. -void RegPressureTracker::increasePhysRegPressure(unsigned Reg) { - increaseSetPressure(CurrSetPressure, P.MaxSetPressure, - TRI->getMinimalPhysRegClass(Reg), TRI); +/// Increase the current pressure as impacted by these physical registers and +/// bump the high water mark if needed. +void RegPressureTracker::increasePhysRegPressure(ArrayRef<unsigned> Regs) { + for (unsigned I = 0, E = Regs.size(); I != E; ++I) + increaseSetPressure(CurrSetPressure, P.MaxSetPressure, + TRI->getMinimalPhysRegClass(Regs[I]), TRI); } -/// Simply decrease the current pressure as impacted by this physcial register. -void RegPressureTracker::decreasePhysRegPressure(unsigned Reg) { - decreaseSetPressure(CurrSetPressure, TRI->getMinimalPhysRegClass(Reg), TRI); +/// Simply decrease the current pressure as impacted by these physcial +/// registers. +void RegPressureTracker::decreasePhysRegPressure(ArrayRef<unsigned> Regs) { + for (unsigned I = 0, E = Regs.size(); I != E; ++I) + decreaseSetPressure(CurrSetPressure, TRI->getMinimalPhysRegClass(Regs[I]), + TRI); } -/// Increase the current pressure as impacted by this virtual register and bump -/// the high water mark if needed. -void RegPressureTracker::increaseVirtRegPressure(unsigned Reg) { - increaseSetPressure(CurrSetPressure, P.MaxSetPressure, - MRI->getRegClass(Reg), TRI); +/// Increase the current pressure as impacted by these virtual registers and +/// bump the high water mark if needed. +void RegPressureTracker::increaseVirtRegPressure(ArrayRef<unsigned> Regs) { + for (unsigned I = 0, E = Regs.size(); I != E; ++I) + increaseSetPressure(CurrSetPressure, P.MaxSetPressure, + MRI->getRegClass(Regs[I]), TRI); } -/// Simply decrease the current pressure as impacted by this virtual register. -void RegPressureTracker::decreaseVirtRegPressure(unsigned Reg) { - decreaseSetPressure(CurrSetPressure, MRI->getRegClass(Reg), TRI); +/// Simply decrease the current pressure as impacted by these virtual registers. +void RegPressureTracker::decreaseVirtRegPressure(ArrayRef<unsigned> Regs) { + for (unsigned I = 0, E = Regs.size(); I != E; ++I) + decreaseSetPressure(CurrSetPressure, MRI->getRegClass(Regs[I]), TRI); } /// Clear the result so it can be used for another round of pressure tracking. @@ -390,7 +396,9 @@ bool RegPressureTracker::recede() { static_cast<RegionPressure&>(P).openTop(CurrPos); // Find the previous instruction. - while (--CurrPos != MBB->begin() && CurrPos->isDebugValue()); + do + --CurrPos; + while (CurrPos != MBB->begin() && CurrPos->isDebugValue()); if (CurrPos->isDebugValue()) { closeRegion(); @@ -409,14 +417,10 @@ bool RegPressureTracker::recede() { collectOperands(CurrPos, PhysRegOpers, VirtRegOpers, TRI, RCI); // Boost pressure for all dead defs together. - for (unsigned i = 0; i < PhysRegOpers.DeadDefs.size(); ++i) - increasePhysRegPressure(PhysRegOpers.DeadDefs[i]); - for (unsigned i = 0; i < VirtRegOpers.DeadDefs.size(); ++i) - increaseVirtRegPressure(VirtRegOpers.DeadDefs[i]); - for (unsigned i = 0; i < PhysRegOpers.DeadDefs.size(); ++i) - decreasePhysRegPressure(PhysRegOpers.DeadDefs[i]); - for (unsigned i = 0; i < VirtRegOpers.DeadDefs.size(); ++i) - decreaseVirtRegPressure(VirtRegOpers.DeadDefs[i]); + increasePhysRegPressure(PhysRegOpers.DeadDefs); + increaseVirtRegPressure(VirtRegOpers.DeadDefs); + decreasePhysRegPressure(PhysRegOpers.DeadDefs); + decreaseVirtRegPressure(VirtRegOpers.DeadDefs); // Kill liveness at live defs. // TODO: consider earlyclobbers? @@ -528,16 +532,14 @@ bool RegPressureTracker::advance() { } // Boost pressure for all dead defs together. - for (unsigned i = 0; i < PhysRegOpers.DeadDefs.size(); ++i) - increasePhysRegPressure(PhysRegOpers.DeadDefs[i]); - for (unsigned i = 0; i < VirtRegOpers.DeadDefs.size(); ++i) - increaseVirtRegPressure(VirtRegOpers.DeadDefs[i]); - for (unsigned i = 0; i < PhysRegOpers.DeadDefs.size(); ++i) - decreasePhysRegPressure(PhysRegOpers.DeadDefs[i]); - for (unsigned i = 0; i < VirtRegOpers.DeadDefs.size(); ++i) - decreaseVirtRegPressure(VirtRegOpers.DeadDefs[i]); + increasePhysRegPressure(PhysRegOpers.DeadDefs); + increaseVirtRegPressure(VirtRegOpers.DeadDefs); + decreasePhysRegPressure(PhysRegOpers.DeadDefs); + decreaseVirtRegPressure(VirtRegOpers.DeadDefs); // Find the next instruction. - while (++CurrPos != MBB->end() && CurrPos->isDebugValue()); + do + ++CurrPos; + while (CurrPos != MBB->end() && CurrPos->isDebugValue()); return true; } |