package frama-c
Install
Dune Dependency
Authors
-
MMichele Alberti
-
TThibaud Antignac
-
GGergö Barany
-
PPatrick Baudin
-
NNicolas Bellec
-
TThibaut Benjamin
-
AAllan Blanchard
-
LLionel Blatter
-
FFrançois Bobot
-
RRichard Bonichon
-
VVincent Botbol
-
QQuentin Bouillaguet
-
DDavid Bühler
-
ZZakaria Chihani
-
LLoïc Correnson
-
JJulien Crétin
-
PPascal Cuoq
-
ZZaynah Dargaye
-
BBasile Desloges
-
JJean-Christophe Filliâtre
-
PPhilippe Herrmann
-
MMaxime Jacquemin
-
FFlorent Kirchner
-
AAlexander Kogtenkov
-
RRemi Lazarini
-
TTristan Le Gall
-
JJean-Christophe Léchenet
-
MMatthieu Lemerre
-
DDara Ly
-
DDavid Maison
-
CClaude Marché
-
AAndré Maroneze
-
TThibault Martin
-
FFonenantsoa Maurica
-
MMelody Méaulle
-
BBenjamin Monate
-
YYannick Moy
-
PPierre Nigron
-
AAnne Pacalet
-
VValentin Perrelle
-
GGuillaume Petiot
-
DDario Pinto
-
VVirgile Prevosto
-
AArmand Puccetti
-
FFélix Ridoux
-
VVirgile Robles
-
JJan Rochel
-
MMuriel Roger
-
JJulien Signoles
-
NNicolas Stouls
-
KKostyantyn Vorobyov
-
BBoris Yakobowski
Maintainers
Sources
sha256=d2fbb3b8d0ff83945872e9e6fa258e934a706360e698dae3b4d5f971addf7493
doc/frama-c.kernel/Frama_c_kernel/Dataflow2/Forwards/argument-1-_/index.html
Parameter Forwards._
val pretty : Format.formatter -> t -> unit
Pretty-print the state.
val computeFirstPredecessor : Cil_types.stmt -> t -> t
computeFirstPredecessor s d
is called when s
is reached for the first time (i.e. no previous data is associated with it). The data d
is propagated to s
from an unspecified preceding statement s'
. The result of the call is stored as the new data for s
.
computeFirstPredecessor
usually leaves d
unchanged, but may potentially change it. It is also possible to perform a side-effect, for dataflows that store information out of the type t
.
val combinePredecessors : Cil_types.stmt -> old:t -> t -> t option
Take some old data for the given statement, and some new data for the same point. Return None if the combination is identical to the old data, to signify that a fixpoint is currently reached for this statement. Otherwise, compute the combination, and return it.
val doInstr : Cil_types.stmt -> Cil_types.instr -> t -> t
val doGuard :
Cil_types.stmt ->
Cil_types.exp ->
t ->
t guardaction * t guardaction
Generate the successors act_th, act_el
to an If
statement. act_th
(resp. act_el
) corresponds to the case where the given expression evaluates to zero (resp. non-zero). It is always possible to return GDefault, GDefault
, especially for analyses that do not use guard information. This is equivalent to returning GUse d, GUse d
, where d
is the input state. A return value of GUnreachable indicates that this half of the branch will not be taken and should not be explored. stmt
is the corresponding If
statement, passed as information only.
val doStmt : Cil_types.stmt -> t -> t stmtaction
The (forwards) transfer function for a statement. The (Current_loc.get ())
* is set before calling this. The default action is to do the instructions * in this statement, if applicable, and continue with the successors.
val doEdge : Cil_types.stmt -> Cil_types.stmt -> t -> t
what to do when following the edge between the two given statements. Can default to identity if nothing special is required.
module StmtStartData : StmtStartData with type data = t
For each statement id, the data at the start. Not found in the hash table means nothing is known about the state at this point. At the end of the analysis this means that the block is not reachable.