let memo_aux_variable tr counter used_prms vi =
try
let my_var = Cil_datatype.Varinfo.Hashtbl.find used_prms vi in
get_bindings_term counter my_var (Ctype vi.vtype)
with Not_found ->
let my_type =
match counter with
| None -> vi.vtype
| Some _ -> TArray(vi.vtype,None,{scache=Not_Computed},[])
in
let my_var =
Cil.makeGlobalVar (get_fresh ("aorai_" ^ vi.vname)) my_type
in
add_aux_variable my_var;
let my_lvar = Cil.cvar_to_lvar my_var in
Cil_datatype.Varinfo.Hashtbl.add used_prms vi my_lvar;
(match tr.cross with
| Normal (cond,action) ->
let st = Extlib.opt_map (fun _ -> tr.stop) counter in
let loc = get_bindings st my_lvar in
let copy = Copy_value (loc,Logic_const.tvar (Cil.cvar_to_lvar vi)) in
tr.cross <- Normal(cond,copy::action)
| Epsilon _ ->
Aorai_option.fatal "Epsilon transition used as Call event"
);
get_bindings_term counter my_lvar (Ctype vi.vtype)