jon.recoil.org

Module Regalloc_split_state

type definitions_at_beginning = Reg.Set.t Label.Map.t
type phi_at_beginning = Reg.Set.t Label.Map.t
type t
val log_renaming_info : Regalloc_split_state.t -> unit

Constructs the renaming information necessary to split the live ranges.

The components are:

  • destructions_at_end, a map from labels (of blocks ending with a destruction point) to sets of registers that need to be spilled;
  • definitions_at_beginning, a map from labels (of blocks being successors of destruction point) to sets of registers that need to be reloaded;
  • phi_at_beginning, a map from labels (of blocks starting with phi functions) to sets of registers that need to be unified (this set contains the original name of the registers which need a phi, i.e. if we need to insert `x = phi(x', x'')` then the set contains `x`).