sig
type ident = string
type register = Register.t
type label = Label.t
type instr =
Econst of int32 * Ertltree.register * Ertltree.label
| Eload of Ertltree.register * int * Ertltree.register * Ertltree.label
| Estore of Ertltree.register * Ertltree.register * int * Ertltree.label
| Emunop of Ops.munop * Ertltree.register * Ertltree.label
| Embinop of Ops.mbinop * Ertltree.register * Ertltree.register *
Ertltree.label
| Emubranch of Ops.mubranch * Ertltree.register * Ertltree.label *
Ertltree.label
| Embbranch of Ops.mbbranch * Ertltree.register * Ertltree.register *
Ertltree.label * Ertltree.label
| Egoto of Ertltree.label
| Ecall of Ertltree.ident * int * Ertltree.label
| Ealloc_frame of Ertltree.label
| Edelete_frame of Ertltree.label
| Eget_param of int * Ertltree.register * Ertltree.label
| Epush_param of Ertltree.register * Ertltree.label
| Ereturn
type cfg = Ertltree.instr Label.map
type deffun = {
fun_name : Ertltree.ident;
fun_formals : int;
fun_locals : Register.set;
fun_entry : Ertltree.label;
fun_body : Ertltree.cfg;
}
type file = { funs : Ertltree.deffun list; }
val succ : Ertltree.instr -> Ertltree.label list
val def_use :
Ertltree.instr -> Ertltree.register list * Ertltree.register list
val visit :
(Ertltree.label -> Ertltree.instr -> unit) ->
Ertltree.cfg -> Ertltree.label -> unit
val print_instr : Stdlib.Format.formatter -> Ertltree.instr -> unit
val print_graph :
Stdlib.Format.formatter -> Ertltree.cfg -> Ertltree.label -> unit
val print_deffun : Stdlib.Format.formatter -> Ertltree.deffun -> unit
val print_file : Stdlib.Format.formatter -> Ertltree.file -> unit
end