Module Decompose_ssa


module Decompose_ssa: sig  end


type inserted_phi_assignments = (int * Ctt_abstree.c_type * int) list

type block_info = {
   mutable trampoline_blocks : (int * inserted_phi_assignments) list;
   mutable phi_assignments_at_bottom : inserted_phi_assignments;
}
val label_direct : int -> string
val label_trampoline : int -> int -> string
val phase1 : Il.il_function -> block_info array
val convert_target : info:block_info array -> cur:int -> int -> string
val get_argument_name : f:Il.il_function -> int -> Il.identifier
val convert_block : f:Il.il_function ->
int -> info:block_info array -> Separate_side_effect.il0 list
val make_phi_assigns : (Il.temp_id * Ctt_abstree.c_type * Il.temp_id) list ->
Separate_side_effect.il0
val separate_last_branch : Separate_side_effect.il0 list ->
Separate_side_effect.il0 list * Separate_side_effect.il0 list
val phase2 : Il.il_function ->
info:block_info array -> Separate_side_effect.il0