Module Mlang.Mir
type set_value
= Com.Var.t Com.set_value
type access
= Com.Var.t Com.access
type m_access
= access Pos.marked
type expression
= Com.Var.t Com.expression
type m_expression
= expression Pos.marked
type instruction
= (Com.Var.t, Com.Error.t) Com.instruction
type m_instruction
= instruction Pos.marked
type target
= (Com.Var.t, Com.Error.t) Com.target
type stats
=
{
nb_computed : int;
nb_base : int;
nb_input : int;
nb_vars : int;
nb_all_tmps : int;
nb_all_refs : int;
sz_computed : int;
sz_base : int;
sz_input : int;
sz_vars : int;
sz_all_tmps : int;
nb_all_tables : int;
sz_all_tables : int;
max_nb_args : int;
table_map : Com.Var.t Mlang.IntMap.t;
}
type program
=
{
program_safe_prefix : string;
program_applications : Pos.t Mlang.StrMap.t;
program_var_categories : Com.CatVar.data Mlang.Com.CatVar.Map.t;
program_rule_domains : Com.rule_domain Mlang.Com.DomainIdMap.t;
program_verif_domains : Com.verif_domain Mlang.Com.DomainIdMap.t;
program_dict : Com.Var.t Mlang.IntMap.t;
program_vars : Com.Var.t Mlang.StrMap.t;
program_alias : Com.Var.t Mlang.StrMap.t;
program_var_spaces : int Mlang.StrMap.t;
program_var_spaces_idx : Com.variable_space Mlang.IntMap.t;
program_var_space_def : Com.variable_space;
program_event_fields : Com.event_field Mlang.StrMap.t;
program_event_field_idxs : string Mlang.IntMap.t;
program_rules : string Mlang.IntMap.t;
program_verifs : string Mlang.IntMap.t;
program_chainings : string Mlang.StrMap.t;
program_errors : Com.Error.t Mlang.StrMap.t;
program_functions : target Mlang.StrMap.t;
program_targets : target Mlang.StrMap.t;
program_main_target : string;
program_stats : stats;
}
val find_var_name_by_alias : program -> string Pos.marked -> string
val find_var_by_name : program -> string Pos.marked -> Com.Var.t
Get a variable for a given name or alias, because of SSA multiple variables share a name or alias. If an alias is provided, the variable returned is that with the lowest execution number. When a name is provided, then the variable with the highest execution number is returned.