package goblint
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
Static analysis framework for C
Install
dune-project
Dependency
Authors
Maintainers
Sources
goblint-2.7.1.tbz
sha256=af01aac256229f33a90a9fcbfed04b01e3097f154d4d124f006476d6387c6a66
sha512=2a93bfe16881adbc2d8dcbfe38c1e19cd24ca105d8e1eda13d02440f3002874ffe2957dfd937510765233a054a40568b0052db92e31d382a5bd215d1ec12565c
doc/goblint.lib/Goblint_lib/DeadCode/index.html
Module Goblint_lib.DeadCode
Dead code elimination transformation (remove_dead_code).
val empty_block : unit -> GoblintCil.blockval filter_map_block :
?unchecked_condition:(unit -> GoblintCil.exp) ->
(GoblintCil.stmt -> bool) ->
GoblintCil.block ->
boolFilter 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 -> boolIs 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.tPerform 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.
module RemoveDeadCode : Transform.S sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>