|
|
|
| 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 |