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
  | Base.Cell_class _ -> V_Offsetmap.empty
  | Base.String (_,s) -> V_Offsetmap.from_string s