Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
Do not compute the Dom graph, it will fail. Using compute_all
is fine, as long as you don't use the dom_graph closure.
module S : sig ... end
type idom = Llvm.llbasicblock -> Llvm.llbasicblock
type idoms = Llvm.llbasicblock -> Llvm.llbasicblock -> bool
type dom_tree = Llvm.llbasicblock -> Llvm.llbasicblock list
type dominators = Llvm.llbasicblock -> Llvm.llbasicblock list
type dom = Llvm.llbasicblock -> Llvm.llbasicblock -> bool
type sdom = Llvm.llbasicblock -> Llvm.llbasicblock -> bool
type dom_frontier = Llvm.llbasicblock -> Llvm.llbasicblock list
type dom_graph = unit -> Llvm.llvalue
type dom_functions = {
idom : idom;
idoms : idoms;
dom_tree : dom_tree;
dominators : dominators;
dom : dom;
sdom : sdom;
dom_frontier : dom_frontier;
dom_graph : dom_graph;
}
val compute_idom :
Llvm.llvalue ->
Llvm.llbasicblock ->
Llvm.llbasicblock ->
Llvm.llbasicblock
val dominators_to_sdom :
(Llvm.llbasicblock -> S.t) ->
S.elt ->
Llvm.llbasicblock ->
bool
val dom_to_sdom :
(Llvm.llbasicblock -> Llvm.llbasicblock -> bool) ->
Llvm.llbasicblock ->
Llvm.llbasicblock ->
bool
val dominators_to_dom_tree :
Llvm.llvalue ->
?pred:(Llvm.llvalue -> S.elt -> S.elt list) ->
(S.elt -> S.t) ->
S.elt ->
S.t
val idom_to_dom_tree :
Llvm.llvalue ->
(Llvm.llbasicblock -> Llvm.llbasicblock) ->
Llvm.llbasicblock ->
Llvm.llbasicblock list
val idom_to_idoms : idom -> Llvm.llbasicblock -> Llvm.llbasicblock -> bool
val compute_dom_frontier :
Llvm.llvalue ->
dom_tree ->
idom ->
Llvm.llbasicblock ->
Llvm.llbasicblock list
val idom_to_dom :
(Llvm.llbasicblock -> Llvm.llbasicblock) ->
Llvm.llbasicblock ->
Llvm.llbasicblock ->
bool
val compute_dom_graph : Llvm.llvalue -> dom_tree -> Llvm.llvalue
val compute_all : Llvm.llvalue -> Llvm.llbasicblock -> dom_functions