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 33 34 35 36 37 38 39 40 41 42
|
(*
* Signatures used by the iterative data flow analyzers.
*
* -- Allen
*)
signature DATAFLOW_ANALYZER =
sig
structure CFG : CONTROL_FLOW_GRAPH
type dataflow_info
val analyze : CFG.cfg * dataflow_info -> dataflow_info
end
signature DATAFLOW_PROBLEM =
sig
structure CFG : CONTROL_FLOW_GRAPH
type domain
type dataflow_info
val forward : bool
val bot : domain
val == : domain * domain -> bool
val join : domain list -> domain
val prologue : CFG.cfg * dataflow_info ->
CFG.block Graph.node ->
{ input : domain,
output : domain,
transfer : domain -> domain
}
val epilogue : CFG.cfg * dataflow_info ->
{ node : CFG.block Graph.node,
input : domain,
output : domain
} -> unit
end
|