Module Global_flow_graph.Relations
type 'a atom = [> `Atom of Flambda2_datalog.Datalog.atom ] as 'atype 'a term = 'a Flambda2_datalog.Datalog.Term.tval alias :
to_:Flambda2_identifiers.Code_id_or_name.t term ->
from:Flambda2_identifiers.Code_id_or_name.t term ->
_ atomval use :
to_:Flambda2_identifiers.Code_id_or_name.t term ->
from:Flambda2_identifiers.Code_id_or_name.t term ->
_ atomval accessor :
to_:Flambda2_identifiers.Code_id_or_name.t term ->
Field.t term ->
base:Flambda2_identifiers.Code_id_or_name.t term ->
_ atomaccessor ~to_ field ~base represents a directed flow from the field field of variable base into the variable to_.
It corresponds to a projection to_ = base.field.
val constructor :
base:Flambda2_identifiers.Code_id_or_name.t term ->
Field.t term ->
from:Flambda2_identifiers.Code_id_or_name.t term ->
_ atomconstructor ~base field ~from represents a directed flow from variable from into the field field or allocation base.
It corresponds to an allocation base = { field = from; _ } (there might be other fields in the allocation).
val argument :
from:Flambda2_identifiers.Code_id_or_name.t term ->
Cofield.t term ->
base:Flambda2_identifiers.Code_id_or_name.t term ->
_ atomargument ~from param ~base represents a directed flow from variable from into the parameter param of function base.
It corresponds to a call base(param = from, _) (there might be other parameters in the call).
Note that base is a virtual object representing function-like calls; see the comment about encoding of function calls in Dep_solver.
val parameter :
base:Flambda2_identifiers.Code_id_or_name.t term ->
Cofield.t term ->
to_:Flambda2_identifiers.Code_id_or_name.t term ->
_ atomparameter ~base param ~to_ represents a directed flow from function parameter param into variable to_.
There is no surface language syntax for this; we write to_ = base@param.
Note that base is a virtual object representing function-like calls; see the comment about encoding of function calls in Dep_solver.
val propagate :
if_used:Flambda2_identifiers.Code_id_or_name.t term ->
to_:Flambda2_identifiers.Code_id_or_name.t term ->
from:Flambda2_identifiers.Code_id_or_name.t term ->
_ atomval alias_if_any_source :
if_any_source:Flambda2_identifiers.Code_id_or_name.t term ->
to_:Flambda2_identifiers.Code_id_or_name.t term ->
from:Flambda2_identifiers.Code_id_or_name.t term ->
_ atomval any_usage : Flambda2_identifiers.Code_id_or_name.t term -> _ atomval any_source : Flambda2_identifiers.Code_id_or_name.t term -> _ atomval zero_alloc_source : Flambda2_identifiers.Code_id_or_name.t term -> _ atomval code_id_my_closure :
code_id:Flambda2_identifiers.Code_id_or_name.t term ->
my_closure:Flambda2_identifiers.Code_id_or_name.t term ->
_ atom