|
|
|
Description |
State monad for the linear register allocator.
|
|
Synopsis |
|
|
|
Documentation |
|
|
The register alloctor state
| Constructors | RA_State | | ra_blockassig :: BlockAssignment | the current mapping from basic blocks to
the register assignments at the beginning of that block.
| ra_freeregs :: !FreeRegs | free machine registers
| ra_assig :: RegMap Loc | assignment of temps to locations
| ra_delta :: Int | current stack delta
| ra_stack :: StackMap | free stack slots for spilling
| ra_us :: UniqSupply | unique supply for generating names for join point fixup blocks.
| ra_spills :: [SpillReason] | Record why things were spilled, for -ddrop-asm-stats.
Just keep a list here instead of a map of regs -> reasons.
We don't want to slow down the allocator if we're not going to emit the stats.
|
|
|
|
|
|
The register allocator monad type.
| Instances | |
|
|
|
Run a computation in the RegM register allocator monad.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Record that a spill instruction was inserted, for profiling.
|
|
Produced by Haddock version 2.6.1 |