let create_hidden_base
validity_from_type ~hidden_var_name ~name_desc pointed_typ =
let hidden_var =
makeGlobalVar ~generated:false ~logic:true hidden_var_name pointed_typ
in
Globals.Vars.add_decl hidden_var;
hidden_var.vdescr <- Some name_desc;
let validity =
if validity_from_type
then begin
match Base.validity_from_type hidden_var with
| Base.Known (a,b)
when not (Value_parameters.AllocatedContextValid.get ()) ->
Base.Unknown (a,b)
| (Base.All | Base.Unknown _ | Base.Known _) as s -> s
| Base.Periodic _ -> assert false
end
else Base.Unknown (Int.zero,Bit_utils.max_bit_address ())
in
let hidden_base = Base.create_logic hidden_var validity
in
hidden_base