let rec typ state values loc = function
| TVoid _ | TInt _ | TFloat _ | TPtr _ | TArray _ | TFun _
| TEnum _ | TBuiltin_va_list _ ->
state
| TNamed(info, _) ->
typ state values loc info.ttype
| TComp(info, _, _) as ty ->
List.fold_left (field values ty loc) state info.cfields
and field values ty loc state f =
let s = L.type_attributes2state S.variable f.ftype in
Location_Bits.fold_bases
(fun b state ->
let loc = loc_of_typoffset b ty (Field(f, NoOffset)) in
let state = change_loc_status values state loc s in
typ state values loc f.ftype)
loc.loc
state