let default_offsetmap base = match base with
| Base.Initialized_Var (v,_) ->
(try Cil_datatype.Varinfo.Hashtbl.find initialized_var_table v
with Not_found ->
V_Offsetmap.empty)
| Base.Var _ ->
begin
match Base.validity base with
Base.All ->
let upb = Bit_utils.max_bit_address () in
V_Offsetmap.add_internal
(Int.zero, upb)
(Int.zero, Int.one, V_Or_Uninitialized.uninitialized)
V_Offsetmap.empty
| Base.Known (mn, mx) | Base.Unknown (mn, mx) ->
if Int.ge mx mn
then
V_Offsetmap.add_internal
(mn, mx)
(Int.zero, Int.one, V_Or_Uninitialized.uninitialized)
V_Offsetmap.empty
else
V_Offsetmap.empty
| Base.Periodic (mn, mx, p) ->
assert (Int.is_zero mn);
let upb = Int.pred p in
assert (Int.ge mx upb);
V_Offsetmap.add_internal
(Int.zero, upb)
(Int.zero, Int.one, V_Or_Uninitialized.bottom)
V_Offsetmap.empty
end
| Base.Null -> V_Offsetmap.empty
| Base.String (_,e) -> V_Offsetmap.from_cstring (Base.get_string e)