Module IR.Var

Single abstraction for all the kinds of variables in SIL

type t = private
  1. | LogicalVar of Ident.t
  2. | ProgramVar of Pvar.t
include Ppx_compare_lib.Comparable.S with type t := t
val compare : t Base__Ppx_compare_lib.compare
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
include Sexplib0.Sexpable.S with type t := t
val t_of_sexp : Sexplib0__.Sexp.t -> t
val sexp_of_t : t -> Sexplib0__.Sexp.t
include Ppx_hash_lib.Hashable.S with type t := t
val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
include Ppx_compare_lib.Equal.S with type t := t
val equal : t Base__Ppx_compare_lib.equal
val hash_normalize : t -> t
val hash_normalize_opt : t option -> t option
val hash_normalize_list : t list -> t list
val compare_modulo_this : t -> t -> int
val of_id : Ident.t -> t
val of_pvar : Pvar.t -> t

Create a variable representing the ith formal of the current procedure

val get_all_vars_in_exp : Exp.t -> t IStdlib.IStd.Sequence.t

Get all free and program vars

val to_exp : t -> Exp.t
val get_ident : t -> Ident.t option
val get_pvar : t -> Pvar.t option
val is_pvar : t -> bool
val is_global : t -> bool
val is_return : t -> bool
val is_none : t -> bool
val is_this : t -> bool
val is_artificial : t -> bool
val appears_in_source_code : t -> bool

return true if this variable appears in source code (i.e., is not a LogicalVar or a frontend-generated ProgramVar)

val is_cpp_temporary : t -> bool
val is_cpp_unnamed_param : t -> bool
val get_footprint_index : t -> int option
val pp : Stdlib.Format.formatter -> t -> unit
module Map : IStdlib.PrettyPrintable.PPMap with type key = t
module Set : IStdlib.PrettyPrintable.PPSet with type elt = t