let rec pp_ctype dim fmt = function
| TInt(ikind,_) -> Format.fprintf fmt "%a" Cil.d_ikind ikind
| TFloat(fkind,_) -> Format.fprintf fmt "%a" Cil.d_fkind fkind
| TPtr(typ,_) -> Format.fprintf fmt "%a*" (pp_ctype dim) typ
| TFun _ as t -> Format.fprintf fmt "%a*" (pp_ctype dim) t
| TEnum (e,_) -> Format.fprintf fmt "enum %s " e.ename
| TComp (comp,_,_) ->
Format.fprintf fmt
"%s %s"
(if comp.cstruct then "struct" else "union")
comp.cname
| TArray (typ_elt,_,_,_) as t ->
pp_ctype false fmt typ_elt ;
if dim then pp_dim fmt t;
| TBuiltin_va_list _ -> pp_print_string fmt "builtin type"
| TVoid _ -> pp_print_string fmt "void"
| TNamed (t,_) -> Format.fprintf fmt "%s" t.tname