Procdesc.Node
node of the control flow graph
include Ppx_compare_lib.Comparable.S with type t := t
val compare : t Base__Ppx_compare_lib.compare
val hash_fold_id :
Ppx_hash_lib.Std.Hash.state ->
id ->
Ppx_hash_lib.Std.Hash.state
val hash_id : id -> Ppx_hash_lib.Std.Hash.hash_value
type stmt_nodekind =
| AssertionFailure
| AtomicCompareExchangeBranch
| AtomicExpr
| BetweenJoinAndExit
| BinaryConditionalStmtInit
| BinaryOperatorStmt of string
| Call of string
| CallObjCNew
| CaseStmt
| ClassCastException
| CompoundStmt
| ConditionalStmtBranch
| ConstructorInit
| CXXDynamicCast
| CXXNewExpr
| CXXStdInitializerListExpr
| CXXTemporaryMarkerSet
| CXXTry
| CXXTypeidExpr
| DeclStmt
| DefineBody
| Destruction of destruction_kind
| Erlang
| ErlangCaseClause
| ErlangExpression
| ExceptionHandler
| ExceptionsSink
| ExprWithCleanups
| FinallyBranch
| GCCAsmStmt
| GenericSelectionExpr
| IfStmtBranch
| InitializeDynamicArrayLength
| InitListExp
| LoopBody
| LoopIterIncr
| LoopIterInit
| MessageCall of string
| MethodBody
| MonitorEnter
| MonitorExit
| ObjCCPPThrow
| ObjCIndirectCopyRestoreExpr
| OutOfBound
| ReturnStmt
| Scope of string
| Skip
| SwitchStmt
| ThisNotNull
| Throw
| ThrowNPE
| UnaryOperator
kind of statement node
type nodekind =
| Start_node
| Exit_node
| Stmt_node of stmt_nodekind
| Join_node
| Prune_node of bool * Sil.if_kind * prune_node_kind
(true/false branch, if_kind, comment)
*)| Skip_node of string
kind of cfg node
val exn_handler_kind : nodekind
kind of Stmt_node for an exception handler.
val exn_sink_kind : nodekind
kind of Stmt_node for an exceptions sink.
val throw_kind : nodekind
kind of Stmt_node for a throw instruction.
Append the instructions to the list of instructions to execute
Prepend the instructions to the list of instructions to execute
Dump instructions for the node, highlighting the given subinstruction if present
val dummy : Procname.t -> t
Create a dummy node
val get_description : IStdlib.Pp.env -> t -> string
Return a description of the node
val get_distance_to_exit : t -> int option
Get the distance to the exit node, if it has been computed
val get_instrs : t -> Instrs.not_reversed_t
Get the instructions to be executed
val get_last_loc : t -> IBase.Location.t
Get the source location of the last instruction in the node
Find in the given node or its predecessors
val get_loc : t -> IBase.Location.t
Get the source location of the node
val get_proc_name : t -> Procname.t
Get the name of the procedure the node belongs to
val get_wto_index : t -> int
Set an exit node corresponding to a start node of a code block. Using this, when there is a code block, frontend can keep the correspondence between start/exit nodes of a code block.
val is_dangling : t -> bool
Returns true if the node is dangling, i.e. no successors and predecessors
val pp : Stdlib.Format.formatter -> t -> unit
Pretty print the node
val pp_id : Stdlib.Format.formatter -> id -> unit
Pretty print a node id
val pp_stmt : Stdlib.Format.formatter -> stmt_nodekind -> unit
val pp_with_instrs : ?print_types:bool -> Stdlib.Format.formatter -> t -> unit
Pretty print the node with instructions