module LoopInfo: sig
.. end
To use WeiMaoZouChen algorithm,
we need to define how to interact with our CFG graph
type
node = Cil2cfg.CFG.V.t
type
graph = Cil2cfg.t
type
tenv = {
}
val init : Cil2cfg.t -> tenv * Cil2cfg.CFG.V.t
val eq_nodes : Cil2cfg.CFG.V.t -> Cil2cfg.CFG.V.t -> bool
val set_pos : tenv ->
node -> int -> tenv
val reset_pos : tenv -> node -> tenv
val get_pos : tenv -> node -> int
val get_pos_if_traversed : tenv -> node -> int option
val set_iloop_header : tenv ->
node -> node -> tenv
val get_iloop_header : tenv ->
node -> node option
val add_loop_header : tenv -> node -> tenv
val add_irreducible : tenv -> node -> tenv
val add_reentry_edge : 'a -> 'b -> 'c -> 'a
val is_irreducible : tenv -> Cil2cfg.CFG.V.t -> bool
val fold_succ : (tenv -> Cil2cfg.CFG.vertex -> tenv) ->
tenv -> Cil2cfg.CFG.vertex -> tenv
val incr : tenv -> tenv
val incr_xi : tenv -> tenv
val incr_yi : tenv -> tenv
val unstructuredness : tenv -> float
val pretty_node : Format.formatter -> Cil2cfg.node_type Pervasives.ref -> unit