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