summaryrefslogtreecommitdiff
path: root/cil/src/ext/cfg.mli
diff options
context:
space:
mode:
Diffstat (limited to 'cil/src/ext/cfg.mli')
-rw-r--r--cil/src/ext/cfg.mli36
1 files changed, 36 insertions, 0 deletions
diff --git a/cil/src/ext/cfg.mli b/cil/src/ext/cfg.mli
new file mode 100644
index 0000000..19c5166
--- /dev/null
+++ b/cil/src/ext/cfg.mli
@@ -0,0 +1,36 @@
+(** Code to compute the control-flow graph of a function or file.
+ This will fill in the [preds] and [succs] fields of {!Cil.stmt}
+
+ This is required for several other extensions, such as {!Dataflow}.
+*)
+
+open Cil
+
+
+(** Compute the CFG for an entire file, by calling cfgFun on each function. *)
+val computeFileCFG: Cil.file -> unit
+
+(** clear the sid, succs, and preds fields of each statement. *)
+val clearFileCFG: Cil.file -> unit
+
+(** Compute a control flow graph for fd. Stmts in fd have preds and succs
+ filled in *)
+val cfgFun : fundec -> int
+
+(** clear the sid, succs, and preds fields of each statment in a function *)
+val clearCFGinfo: Cil.fundec -> unit
+
+(** print control flow graph (in dot form) for fundec to channel *)
+val printCfgChannel : out_channel -> fundec -> unit
+
+(** Print control flow graph (in dot form) for fundec to file *)
+val printCfgFilename : string -> fundec -> unit
+
+(** Next statement id that will be assigned. *)
+val start_id: int ref
+
+(** All of the nodes in a file. *)
+val nodeList : stmt list ref
+
+(** number of nodes in the CFG *)
+val numNodes : int ref