Add a register pressure tracker.

The spilling and reload passes need to ensure that the set of live
ranges with register affinity can always be assigned registers. The
register pressure tracker can count how many registers are in use for
each top-level register class and give guidance on the type of
registers that need to be spilled when limits are exceeded.

Pressure tracking is extra complicated for the arm32 floating point
register bank because there are multiple top-level register classes (S,
D, Q) competing for the same register units.
This commit is contained in:
Jakob Stoklund Olesen
2017-05-16 10:02:57 -07:00
parent d1e37def3f
commit 1d8efaad83
2 changed files with 297 additions and 0 deletions

View File

@@ -11,6 +11,7 @@ pub mod coloring;
mod affinity;
mod context;
mod diversion;
mod pressure;
mod solver;
pub use self::allocatable_set::AllocatableSet;