Module Node

CFG node. Corresponds to a program point between program statements.

include module type of struct include Printable.StdLeaf end

Default dummy definitions for leaf types: primitive and CIL types, which don't contain inner types that require relifting.

include module type of struct include Printable.Std end

Default dummy definitions.

Include as the first thing to avoid these overriding actual definitions.

val tag : 'a -> 'b
val arbitrary : unit -> 'a
val relift : 'a -> 'b
include module type of struct include Node0 end
type t = Node0.t =
  1. | Statement of CilType.Stmt.t
    (*

    The statements as identified by CIL

    *)
  2. | FunctionEntry of CilType.Fundec.t
  3. | Function of CilType.Fundec.t
    (*

    The variable information associated with the function declaration.

    *)

A node in the Control Flow Graph is either a statement or function. Think of * the function node as last node that all the returning nodes point to. So * the result of the function call is contained in the function node.

val equal : t -> t -> Ppx_deriving_runtime.bool
val compare : t -> t -> Ppx_deriving_runtime.int
val hash : t -> int
val _ : t -> Yojson.Safe.t
val location : t -> GoblintCil.Cil.location
val current_node : t option Stdlib.ref
val name : unit -> string
val pretty_plain : unit -> t -> GoblintCil.Pretty.doc

Pretty node plainly with entire stmt.

val pretty_plain_short : unit -> t -> GoblintCil.Pretty.doc

Pretty node plainly with stmt location.

val pretty_trace : unit -> t -> GoblintCil.Pretty.doc

Pretty node for solver variable tracing with short stmt.

val pretty : unit -> t -> GoblintCil.Pretty.doc

Output functions for Printable interface

include sig ... end
val show : t -> string
val printXml : 'a BatInnerIO.output -> t -> unit
val to_yojson : t -> [> `String of string ]
val show_id : t -> string

Show node ID for CFG and results output.

val show_cfg : t -> string

Show node label for CFG.

val find_fundec : t -> GoblintCil.fundec

Find fundec which the node is in. In an incremental run this might yield old fundecs for pseudo-return nodes from the old file.

val of_id : string -> t
  • raises Not_found