let convert_global_declaration ~env (gdecl : Ctt_abstree.global_declaration) =
let dbody = match gdecl with
CTTdeclFunction(gsc, ty, id, argnames, stmt) ->
let gsc = convert_global_storage_class gsc in
let sq, dc =
convert_declarator ~env ty ~argnames id in
let s = convert_statement ~env stmt in
PdeclFunction(gsc @ sq, dc, [], s)
| CTTdeclVariable(gsc, ty, id, init) ->
let gsc = convert_global_storage_class gsc in
let sq, dc =
convert_declarator ~env ty id in
let init = Option.map (convert_initializer ~env) init in
PdeclVariable(gsc @ sq, [PinitDecl(dc, init)])
in
make_decl dbody