1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
(*
* This is a generic module for computing the control dependence graph
* from any graph with an entry and an exit.
* The graph is treated as a control flow graph.
* The edge predicate is used to determine whether an edge should be
* treated as a branch edge.
*
* -- Allen
*)
signature CONTROL_DEPENDENCE_GRAPH =
sig
structure Dom : DOMINATOR_TREE
type ('n,'e,'g) cdg = ('n,'e,'g) Graph.graph
val control_dependence_graph :
('e -> bool) ->
('n,'e,'g) Dom.postdominator_tree ->
('n,'e,'g) cdg
val control_dependence_graph' :
('n Graph.node -> 'n2 Graph.node) ->
('e Graph.edge -> 'e2 Graph.edge) ->
('g -> 'g2) ->
('e -> bool) ->
('n,'e,'g) Dom.postdominator_tree ->
('n2,'e2,'g2) cdg
end
|