module Writes:sig..end
Computations of the statements that write a given memory zone.
Find the statements that writes a given zone. This is a lightweight version
of module Scope.Defs. Instead of using PDGs (that may be very costly to
compute), we only use Inout. This also means that we can find effects
after* the stmt the user has chosen.
type effects = {
|
direct : |
(* | Direct affectation | *) |
|
indirect : |
(* | Modification inside the body of called function | *) |
}
Given an effect e, something is directly modified by e (through an
affectation, or through a call to a leaf function) if direct holds, and
indirectly (through the effects of a call) otherwise.
val compute : Locations.Zone.t -> (Cil_types.stmt * effects) listcompute z finds all the statements that modifies z, and for each
statement, indicates whether the modification is direct or indirect.