Module Backend.CallGraph
module type NodeSig = sig ... end
val reset : t -> unit
empty the graph and shrink it to its initial size
val create : int -> t
create n
makes an empty graph with initial capacityn
which grows as required
val n_procs : t -> int
number of procedures in graph
val mem : t -> int -> bool
is an int
id
the index of a node in the graph?
val mem_procname : t -> IR.Procname.t -> bool
is there a node for
procname
in the graph?
val flag : t -> IR.Procname.t -> unit
val flag_reachable : t -> IR.Procname.t -> unit
flag all nodes reachable from the node of the given procname, if it exists
val iter_unflagged_leaves : f:(Node.t -> unit) -> t -> unit
iterate over all leaves that have their flag set to false
val remove : t -> IR.Procname.t -> unit
val to_dotty : t -> string -> unit
output call graph in dotty format with the given filename in results dir
val add_edge : t -> pname:IR.Procname.t -> successor_pname:IR.Procname.t -> unit
add an edge from
pname
tosuccessor_pname
in the graph, creating a node forpname
if there isn't one already
val create_node : t -> IR.Procname.t -> IR.Procname.t list -> unit
create a new node with edges from
pname
tosuccessor_pnames
in the graph