summaryrefslogtreecommitdiff
path: root/src/jib/jib_ssa.mli
diff options
context:
space:
mode:
Diffstat (limited to 'src/jib/jib_ssa.mli')
-rw-r--r--src/jib/jib_ssa.mli15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/jib/jib_ssa.mli b/src/jib/jib_ssa.mli
index 759e1ccb..dadb20fd 100644
--- a/src/jib/jib_ssa.mli
+++ b/src/jib/jib_ssa.mli
@@ -60,6 +60,8 @@ val make : initial_size:int -> unit -> 'a array_graph
module IntSet : Set.S with type elt = int
+val get_cond : 'a array_graph -> int -> Jib.cval
+
val get_vertex : 'a array_graph -> int -> ('a * IntSet.t * IntSet.t) option
val iter_graph : ('a -> IntSet.t -> IntSet.t -> unit) -> 'a array_graph -> unit
@@ -77,10 +79,19 @@ exception Not_a_DAG of int
val topsort : 'a array_graph -> int list
+type terminator =
+ | T_undefined of Jib.ctyp
+ | T_match_failure
+ | T_end of Jib.name
+ | T_goto of string
+ | T_jump of int * string
+ | T_label of string
+ | T_none
+
type cf_node =
| CF_label of string
- | CF_block of Jib.instr list
- | CF_guard of Jib.cval
+ | CF_block of Jib.instr list * terminator
+ | CF_guard of int
| CF_start of Jib.ctyp NameMap.t
val control_flow_graph : Jib.instr list -> int * int list * ('a list * cf_node) array_graph