Struct regalloc2::MachineEnv
source · pub struct MachineEnv {
pub preferred_regs_by_class: [Vec<PReg>; 2],
pub non_preferred_regs_by_class: [Vec<PReg>; 2],
pub fixed_stack_slots: Vec<PReg>,
}
Expand description
A machine envrionment tells the register allocator which registers are available to allocate and what register may be used as a scratch register for each class, and some other miscellaneous info as well.
Fields§
§preferred_regs_by_class: [Vec<PReg>; 2]
Preferred physical registers for each class. These are the registers that will be allocated first, if free.
non_preferred_regs_by_class: [Vec<PReg>; 2]
Non-preferred physical registers for each class. These are the registers that will be allocated if a preferred register is not available; using one of these is considered suboptimal, but still better than spilling.
fixed_stack_slots: Vec<PReg>
Some PReg
s can be designated as locations on the stack rather than
actual registers. These can be used to tell the register allocator about
pre-defined stack slots used for function arguments and return values.
PReg
s in this list cannot be used as an allocatable register.
Trait Implementations§
source§impl Clone for MachineEnv
impl Clone for MachineEnv
source§fn clone(&self) -> MachineEnv
fn clone(&self) -> MachineEnv
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more