package goblint

  1. Overview
  2. Docs
Static analysis framework for C

Install

Dune Dependency

Authors

Maintainers

Sources

goblint-2.4.0.tbz
sha256=99b78e6def71534d195eef9084baa26d8334b36084e120aa6afb300c9bf8afa6
sha512=f3162bd95a03c00358a2991f6152fc6169205bfb4c55e2c483e98cc3935673df9656d025b6f1ea0fa5f1bd0aee037d4f483966b0d2907e3fa9bf11a93a3392af

doc/goblint.lib/Goblint_lib/DeadCode/index.html

Module Goblint_lib.DeadCode

Dead code elimination transformation (remove_dead_code).

val empty_block : unit -> GoblintCil.block
val filter_map_block : ?unchecked_condition:(unit -> GoblintCil.exp) -> (GoblintCil.stmt -> bool) -> GoblintCil.block -> bool

Filter statements out of a block (recursively). CFG fields (prev/next, Loop continue/break) are no longer valid after calling. Returns true if anything is left in block, false if the block is now empty. Invariants:

  • f (goto label) ==> f (labelled stmt), i.e. if a goto statement is not filtered out, the target may not be filtered out either.
  • block may not contain switch statements.
val may_stop_execution : GoblintCil.stmt -> bool

Is it possible for this statement to begin executing normally, but not finish?

val find_live_statements : (MyCFG.node -> bool) -> (MyCFG.node -> MyCFG.edges -> MyCFG.node -> GoblintCil.stmt list) -> MyCFG.cfg -> MyCFG.node -> BatSet.Int.t

Perform a depth first search over the CFG. Record the IDs of live statements; for each traversed edge, record the skipped statements along the edge as live, if the nodes on both ends of the edge are live. Record live statements in the nodes themselves as well.

OCaml

Innovation. Community. Security.