Module Absint.ProcCfg

Control-flow graph for a single procedure (as opposed to cfg.ml, which represents a cfg for a file). Defines useful wrappers that allows us to do tricks like turn a forward cfg to into a backward one, or view a cfg as having a single instruction per block

module type NodeCommonS = sig ... end
module InstrNode : sig ... end
module type Node = sig ... end
module type S = sig ... end
module DefaultNode : Node with type t = IR.Procdesc.Node.t and type id = IR.Procdesc.Node.id
module Normal : S with type t = IR.Procdesc.t and module Node = DefaultNode and type instrs_dir = IR.Instrs.not_reversed

Forward CFG with no exceptional control-flow

Forward CFG with exceptional control-flow

Forward CFG with exceptional control-flow, but no edge from exceptions sink to exit node.

module Backward (Base : S with type instrs_dir = IR.Instrs.not_reversed) : S with type t = Base.t and module Node = Base.Node and type instrs_dir = IR.Instrs.reversed

Wrapper that reverses the direction of the CFG

module OneInstrPerNode (Base : S with module Node = DefaultNode) : sig ... end
module NormalOneInstrPerNode : sig ... end
module MakeOcamlGraph (Base : S) : sig ... end