Biabduction.Attribute
Attribute manipulation in Propositions (i.e., Symbolic Heaps)
val is_pred : Predicates.atom -> bool
Check whether an atom is used to mark an attribute
val add :
IR.Tenv.t ->
?footprint:bool ->
?polarity:bool ->
Prop.normal Prop.t ->
IR.PredSymb.t ->
IR.Exp.t list ->
Prop.normal Prop.t
Add an attribute associated to the argument expressions
val add_or_replace :
IR.Tenv.t ->
Prop.normal Prop.t ->
Predicates.atom ->
Prop.normal Prop.t
Replace an attribute associated to the expression
val add_or_replace_check_changed :
IR.Tenv.t ->
Prop.normal Prop.t ->
Predicates.atom ->
Prop.normal Prop.t
Replace an attribute associated to the expression, and call the given function with new and old attributes if they changed.
val get_all : 'a Prop.t -> Predicates.atom list
Get all the attributes of the prop
val get_for_exp : IR.Tenv.t -> 'a Prop.t -> IR.Exp.t -> Predicates.atom list
Get the attributes associated to the expression, if any
val get_objc_null :
IR.Tenv.t ->
'a Prop.t ->
IR.Exp.t ->
Predicates.atom option
Get the objc null attribute associated to the expression, if any
val get_observer : IR.Tenv.t -> 'a Prop.t -> IR.Exp.t -> Predicates.atom option
Get the observer attribute associated to the expression, if any
val get_resource : IR.Tenv.t -> 'a Prop.t -> IR.Exp.t -> Predicates.atom option
Get the resource attribute associated to the expression, if any
val get_undef : IR.Tenv.t -> 'a Prop.t -> IR.Exp.t -> Predicates.atom option
Get the undef attribute associated to the expression, if any
val get_wontleak : IR.Tenv.t -> 'a Prop.t -> IR.Exp.t -> Predicates.atom option
Get the wontleak attribute associated to the expression, if any
Test for existence of an Adangling DAuninit attribute associated to the exp
val remove :
IR.Tenv.t ->
Prop.normal Prop.t ->
Predicates.atom ->
Prop.normal Prop.t
Remove an attribute
val remove_for_attr :
IR.Tenv.t ->
Prop.normal Prop.t ->
IR.PredSymb.t ->
Prop.normal Prop.t
Remove all attributes for the given attr
val remove_resource :
IR.Tenv.t ->
IR.PredSymb.res_act_kind ->
IR.PredSymb.resource ->
Prop.normal Prop.t ->
Prop.normal Prop.t
Remove all attributes for the given resource and kind
val map_resource :
IR.Tenv.t ->
Prop.normal Prop.t ->
(IR.Exp.t -> IR.PredSymb.res_action -> IR.PredSymb.res_action) ->
Prop.normal Prop.t
Apply f to every resource attribute in the prop
val replace_objc_null :
IR.Tenv.t ->
Prop.normal Prop.t ->
IR.Exp.t ->
IR.Exp.t ->
Prop.normal Prop.t
replace_objc_null lhs rhs
. If rhs has the objc_null attribute, replace the attribute and set the lhs = 0
val nullify_exp_with_objc_null :
IR.Tenv.t ->
Prop.normal Prop.t ->
IR.Exp.t ->
Prop.normal Prop.t
For each Var subexp of the argument with an Aobjc_null attribute, remove the attribute and conjoin an equality to zero.
val mark_vars_as_undefined :
IR.Tenv.t ->
Prop.normal Prop.t ->
ret_exp:IR.Exp.t ->
undefined_actuals_by_ref:IR.Exp.t list ->
IR.Procname.t ->
IR.Annot.Item.t ->
IBase.Location.t ->
IR.PredSymb.path_pos ->
Prop.normal Prop.t
mark Exp.Var's or Exp.Lvar's as undefined
type for arithmetic problems
val find_arithmetic_problem :
IR.Tenv.t ->
IR.PredSymb.path_pos ->
Prop.normal Prop.t ->
IR.Exp.t ->
arith_problem option * Prop.normal Prop.t
Look for an arithmetic problem in exp
val deallocate_stack_vars :
IR.Tenv.t ->
Prop.normal Prop.t ->
IR.Pvar.t list ->
IR.Pvar.t list * Prop.normal Prop.t
Deallocate the stack variables in pvars
, and replace them by normal variables. Return the list of stack variables whose address was still present after deallocation.