jon.recoil.org

Module Cfg_loop_infos

val compute_back_edges : Cfg.t -> Cfg_dominators.t -> Cfg_edge.Set.t
type loop = Label.Set.t
val compute_loop_of_back_edge : Cfg.t -> Cfg_edge.t -> loop
type loops = loop Cfg_edge.Map.t
val compute_loops_of_back_edges : Cfg.t -> Cfg_edge.Set.t -> loops
type header_map = loop list Label.Map.t
val compare_loop_by_cardinal : loop -> loop -> int
val compute_header_map : loops -> header_map
val merge_loops : loop list -> loop list
type loop_depths = int Label.Map.t
val compute_loop_depths : Cfg.t -> header_map -> loop_depths
type t = private {
  1. back_edges : Cfg_edge.Set.t;
  2. loops : loops;
  3. header_map : header_map;
  4. loop_depths : loop_depths;
}
val build : Cfg.t -> Cfg_dominators.t -> t
val is_in_loop : t -> Label.t -> bool