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