/* Type information for GCC.
   Copyright (C) 2004, 2007, 2009 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.  */

/* This file is machine generated.  Do not edit.  */

/* Enumeration of types known.  */
enum gt_types_enum {
 gt_ggc_e_15interface_tuple, 
 gt_ggc_e_16volatilized_type, 
 gt_ggc_e_17string_descriptor, 
 gt_ggc_e_15c_inline_static, 
 gt_ggc_e_24VEC_c_goto_bindings_p_gc, 
 gt_ggc_e_15c_goto_bindings, 
 gt_ggc_e_7c_scope, 
 gt_ggc_e_9c_binding, 
 gt_ggc_e_12c_label_vars, 
 gt_ggc_e_8c_parser, 
 gt_ggc_e_9imp_entry, 
 gt_ggc_e_16hashed_attribute, 
 gt_ggc_e_12hashed_entry, 
 gt_ggc_e_14type_assertion, 
 gt_ggc_e_18treetreehash_entry, 
 gt_ggc_e_5CPool, 
 gt_ggc_e_3JCF, 
 gt_ggc_e_17module_htab_entry, 
 gt_ggc_e_13binding_level, 
 gt_ggc_e_9opt_stack, 
 gt_ggc_e_11align_stack, 
 gt_ggc_e_18VEC_tree_gc_vec_gc, 
 gt_ggc_e_19VEC_const_char_p_gc, 
 gt_ggc_e_21pending_abstract_type, 
 gt_ggc_e_15VEC_tree_int_gc, 
 gt_ggc_e_9cp_parser, 
 gt_ggc_e_17cp_parser_context, 
 gt_ggc_e_8cp_lexer, 
 gt_ggc_e_10tree_check, 
 gt_ggc_e_22VEC_deferred_access_gc, 
 gt_ggc_e_10spec_entry, 
 gt_ggc_e_16pending_template, 
 gt_ggc_e_21named_label_use_entry, 
 gt_ggc_e_28VEC_deferred_access_check_gc, 
 gt_ggc_e_18sorted_fields_type, 
 gt_ggc_e_18VEC_tree_pair_s_gc, 
 gt_ggc_e_17named_label_entry, 
 gt_ggc_e_32VEC_qualified_typedef_usage_t_gc, 
 gt_ggc_e_14cp_token_cache, 
 gt_ggc_e_11saved_scope, 
 gt_ggc_e_16cxx_int_tree_map, 
 gt_ggc_e_23VEC_cp_class_binding_gc, 
 gt_ggc_e_24VEC_cxx_saved_binding_gc, 
 gt_ggc_e_16cp_binding_level, 
 gt_ggc_e_11cxx_binding, 
 gt_ggc_e_15binding_entry_s, 
 gt_ggc_e_15binding_table_s, 
 gt_ggc_e_11tinst_level, 
 gt_ggc_e_14VEC_tinfo_s_gc, 
 gt_ggc_e_18gnat_binding_level, 
 gt_ggc_e_9elab_info, 
 gt_ggc_e_10stmt_group, 
 gt_ggc_e_16VEC_parm_attr_gc, 
 gt_ggc_e_11parm_attr_d, 
 gt_ggc_e_22VEC_ipa_edge_args_t_gc, 
 gt_ggc_e_20lto_symtab_entry_def, 
 gt_ggc_e_18mips16_local_alias, 
 gt_ggc_e_18mflip_mips16_entry, 
 gt_ggc_e_20ssa_operand_memory_d, 
 gt_ggc_e_13scev_info_str, 
 gt_ggc_e_24VEC_mem_addr_template_gc, 
 gt_ggc_e_13VEC_gimple_gc, 
 gt_ggc_e_9type_hash, 
 gt_ggc_e_16string_pool_data, 
 gt_ggc_e_13libfunc_entry, 
 gt_ggc_e_23temp_slot_address_entry, 
 gt_ggc_e_15throw_stmt_node, 
 gt_ggc_e_21VEC_eh_landing_pad_gc, 
 gt_ggc_e_16VEC_eh_region_gc, 
 gt_ggc_e_10eh_catch_d, 
 gt_ggc_e_16eh_landing_pad_d, 
 gt_ggc_e_11eh_region_d, 
 gt_ggc_e_10vcall_insn, 
 gt_ggc_e_18VEC_vcall_entry_gc, 
 gt_ggc_e_18VEC_dcall_entry_gc, 
 gt_ggc_e_16var_loc_list_def, 
 gt_ggc_e_12var_loc_node, 
 gt_ggc_e_20VEC_die_arg_entry_gc, 
 gt_ggc_e_16limbo_die_struct, 
 gt_ggc_e_20VEC_pubname_entry_gc, 
 gt_ggc_e_19VEC_dw_attr_node_gc, 
 gt_ggc_e_18comdat_type_struct, 
 gt_ggc_e_25dw_ranges_by_label_struct, 
 gt_ggc_e_16dw_ranges_struct, 
 gt_ggc_e_28dw_separate_line_info_struct, 
 gt_ggc_e_19dw_line_info_struct, 
 gt_ggc_e_25VEC_deferred_locations_gc, 
 gt_ggc_e_18dw_loc_list_struct, 
 gt_ggc_e_15dwarf_file_data, 
 gt_ggc_e_15queued_reg_save, 
 gt_ggc_e_20indirect_string_node, 
 gt_ggc_e_19dw_loc_descr_struct, 
 gt_ggc_e_13dw_fde_struct, 
 gt_ggc_e_13dw_cfi_struct, 
 gt_ggc_e_8typeinfo, 
 gt_ggc_e_22VEC_alias_set_entry_gc, 
 gt_ggc_e_17alias_set_entry_d, 
 gt_ggc_e_24constant_descriptor_tree, 
 gt_ggc_e_15cgraph_asm_node, 
 gt_ggc_e_12varpool_node, 
 gt_ggc_e_22VEC_cgraph_node_set_gc, 
 gt_ggc_e_19cgraph_node_set_def, 
 gt_ggc_e_27cgraph_node_set_element_def, 
 gt_ggc_e_22VEC_cgraph_node_ptr_gc, 
 gt_ggc_e_11cgraph_edge, 
 gt_ggc_e_24VEC_ipa_replace_map_p_gc, 
 gt_ggc_e_15ipa_replace_map, 
 gt_ggc_e_11cgraph_node, 
 gt_ggc_e_18VEC_basic_block_gc, 
 gt_ggc_e_14gimple_bb_info, 
 gt_ggc_e_11rtl_bb_info, 
 gt_ggc_e_11VEC_edge_gc, 
 gt_ggc_e_17cselib_val_struct, 
 gt_ggc_e_12elt_loc_list, 
 gt_ggc_e_13VEC_loop_p_gc, 
 gt_ggc_e_4loop, 
 gt_ggc_e_9loop_exit, 
 gt_ggc_e_13nb_iter_bound, 
 gt_ggc_e_24types_used_by_vars_entry, 
 gt_ggc_e_17language_function, 
 gt_ggc_e_16machine_function, 
 gt_ggc_e_5loops, 
 gt_ggc_e_18control_flow_graph, 
 gt_ggc_e_9eh_status, 
 gt_ggc_e_20initial_value_struct, 
 gt_ggc_e_17rtx_constant_pool, 
 gt_ggc_e_18VEC_temp_slot_p_gc, 
 gt_ggc_e_9temp_slot, 
 gt_ggc_e_9gimple_df, 
 gt_ggc_e_23VEC_call_site_record_gc, 
 gt_ggc_e_18call_site_record_d, 
 gt_ggc_e_14sequence_stack, 
 gt_ggc_e_8elt_list, 
 gt_ggc_e_17tree_priority_map, 
 gt_ggc_e_12tree_int_map, 
 gt_ggc_e_8tree_map, 
 gt_ggc_e_14lang_tree_node, 
 gt_ggc_e_24tree_statement_list_node, 
 gt_ggc_e_9var_ann_d, 
 gt_ggc_e_9lang_decl, 
 gt_ggc_e_9lang_type, 
 gt_ggc_e_10die_struct, 
 gt_ggc_e_15varray_head_tag, 
 gt_ggc_e_12ptr_info_def, 
 gt_ggc_e_22VEC_constructor_elt_gc, 
 gt_ggc_e_17VEC_alias_pair_gc, 
 gt_ggc_e_11VEC_tree_gc, 
 gt_ggc_e_12VEC_uchar_gc, 
 gt_ggc_e_8function, 
 gt_ggc_e_23constant_descriptor_rtx, 
 gt_ggc_e_11fixed_value, 
 gt_ggc_e_10real_value, 
 gt_ggc_e_10VEC_rtx_gc, 
 gt_ggc_e_12object_block, 
 gt_ggc_e_9reg_attrs, 
 gt_ggc_e_9mem_attrs, 
 gt_ggc_e_14bitmap_obstack, 
 gt_ggc_e_18bitmap_element_def, 
 gt_ggc_e_15basic_block_def, 
 gt_ggc_e_8edge_def, 
 gt_ggc_e_17gimple_seq_node_d, 
 gt_ggc_e_12gimple_seq_d, 
 gt_ggc_e_7section, 
 gt_ggc_e_18gimple_statement_d, 
 gt_ggc_e_9rtvec_def, 
 gt_ggc_e_7rtx_def, 
 gt_ggc_e_15bitmap_head_def, 
 gt_ggc_e_9tree_node, 
 gt_ggc_e_6answer, 
 gt_ggc_e_9cpp_macro, 
 gt_ggc_e_9cpp_token, 
 gt_ggc_e_9line_maps, 
 gt_e_II17splay_tree_node_s, 
 gt_e_SP9tree_node17splay_tree_node_s, 
 gt_e_P9tree_nodeP9tree_node17splay_tree_node_s, 
 gt_e_IP9tree_node17splay_tree_node_s, 
 gt_e_P15interface_tuple4htab, 
 gt_e_P16volatilized_type4htab, 
 gt_e_P17string_descriptor4htab, 
 gt_e_P14type_assertion4htab, 
 gt_e_P18treetreehash_entry4htab, 
 gt_e_P17module_htab_entry4htab, 
 gt_e_P21pending_abstract_type4htab, 
 gt_e_P10spec_entry4htab, 
 gt_e_P16cxx_int_tree_map4htab, 
 gt_e_P17named_label_entry4htab, 
 gt_e_P12tree_int_map4htab, 
 gt_e_P20lto_symtab_entry_def4htab, 
 gt_e_IP9tree_node12splay_tree_s, 
 gt_e_P18mips16_local_alias4htab, 
 gt_e_P18mflip_mips16_entry4htab, 
 gt_e_P9tree_nodeP9tree_node12splay_tree_s, 
 gt_e_P12varpool_node4htab, 
 gt_e_P13scev_info_str4htab, 
 gt_e_P23constant_descriptor_rtx4htab, 
 gt_e_P24constant_descriptor_tree4htab, 
 gt_e_P12object_block4htab, 
 gt_e_P7section4htab, 
 gt_e_P17tree_priority_map4htab, 
 gt_e_P8tree_map4htab, 
 gt_e_P9type_hash4htab, 
 gt_e_P13libfunc_entry4htab, 
 gt_e_P23temp_slot_address_entry4htab, 
 gt_e_P15throw_stmt_node4htab, 
 gt_e_P9reg_attrs4htab, 
 gt_e_P9mem_attrs4htab, 
 gt_e_P7rtx_def4htab, 
 gt_e_SP9tree_node12splay_tree_s, 
 gt_e_P10vcall_insn4htab, 
 gt_e_P16var_loc_list_def4htab, 
 gt_e_P10die_struct4htab, 
 gt_e_P15dwarf_file_data4htab, 
 gt_e_P20indirect_string_node4htab, 
 gt_e_P11cgraph_node4htab, 
 gt_e_II12splay_tree_s, 
 gt_e_P27cgraph_node_set_element_def4htab, 
 gt_e_P11cgraph_edge4htab, 
 gt_e_P9loop_exit4htab, 
 gt_e_P24types_used_by_vars_entry4htab, 
 gt_e_P9tree_node4htab, 
 gt_types_enum_last
};

/* GC marker procedures.  */
/* macros and declarations */
#define gt_ggc_m_15interface_tuple(X) do { \
  if (X != NULL) gt_ggc_mx_interface_tuple (X);\
  } while (0)
extern void gt_ggc_mx_interface_tuple (void *);
#define gt_ggc_m_16volatilized_type(X) do { \
  if (X != NULL) gt_ggc_mx_volatilized_type (X);\
  } while (0)
extern void gt_ggc_mx_volatilized_type (void *);
#define gt_ggc_m_17string_descriptor(X) do { \
  if (X != NULL) gt_ggc_mx_string_descriptor (X);\
  } while (0)
extern void gt_ggc_mx_string_descriptor (void *);
#define gt_ggc_m_15c_inline_static(X) do { \
  if (X != NULL) gt_ggc_mx_c_inline_static (X);\
  } while (0)
extern void gt_ggc_mx_c_inline_static (void *);
#define gt_ggc_m_24VEC_c_goto_bindings_p_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_c_goto_bindings_p_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_c_goto_bindings_p_gc (void *);
#define gt_ggc_m_15c_goto_bindings(X) do { \
  if (X != NULL) gt_ggc_mx_c_goto_bindings (X);\
  } while (0)
extern void gt_ggc_mx_c_goto_bindings (void *);
#define gt_ggc_m_7c_scope(X) do { \
  if (X != NULL) gt_ggc_mx_c_scope (X);\
  } while (0)
extern void gt_ggc_mx_c_scope (void *);
#define gt_ggc_m_9c_binding(X) do { \
  if (X != NULL) gt_ggc_mx_c_binding (X);\
  } while (0)
extern void gt_ggc_mx_c_binding (void *);
#define gt_ggc_m_12c_label_vars(X) do { \
  if (X != NULL) gt_ggc_mx_c_label_vars (X);\
  } while (0)
extern void gt_ggc_mx_c_label_vars (void *);
#define gt_ggc_m_8c_parser(X) do { \
  if (X != NULL) gt_ggc_mx_c_parser (X);\
  } while (0)
extern void gt_ggc_mx_c_parser (void *);
#define gt_ggc_m_9imp_entry(X) do { \
  if (X != NULL) gt_ggc_mx_imp_entry (X);\
  } while (0)
extern void gt_ggc_mx_imp_entry (void *);
#define gt_ggc_m_16hashed_attribute(X) do { \
  if (X != NULL) gt_ggc_mx_hashed_attribute (X);\
  } while (0)
extern void gt_ggc_mx_hashed_attribute (void *);
#define gt_ggc_m_12hashed_entry(X) do { \
  if (X != NULL) gt_ggc_mx_hashed_entry (X);\
  } while (0)
extern void gt_ggc_mx_hashed_entry (void *);
#define gt_ggc_m_14type_assertion(X) do { \
  if (X != NULL) gt_ggc_mx_type_assertion (X);\
  } while (0)
extern void gt_ggc_mx_type_assertion (void *);
#define gt_ggc_m_18treetreehash_entry(X) do { \
  if (X != NULL) gt_ggc_mx_treetreehash_entry (X);\
  } while (0)
extern void gt_ggc_mx_treetreehash_entry (void *);
#define gt_ggc_m_5CPool(X) do { \
  if (X != NULL) gt_ggc_mx_CPool (X);\
  } while (0)
extern void gt_ggc_mx_CPool (void *);
#define gt_ggc_m_3JCF(X) do { \
  if (X != NULL) gt_ggc_mx_JCF (X);\
  } while (0)
extern void gt_ggc_mx_JCF (void *);
#define gt_ggc_m_17module_htab_entry(X) do { \
  if (X != NULL) gt_ggc_mx_module_htab_entry (X);\
  } while (0)
extern void gt_ggc_mx_module_htab_entry (void *);
#define gt_ggc_m_13binding_level(X) do { \
  if (X != NULL) gt_ggc_mx_binding_level (X);\
  } while (0)
extern void gt_ggc_mx_binding_level (void *);
#define gt_ggc_m_9opt_stack(X) do { \
  if (X != NULL) gt_ggc_mx_opt_stack (X);\
  } while (0)
extern void gt_ggc_mx_opt_stack (void *);
#define gt_ggc_m_11align_stack(X) do { \
  if (X != NULL) gt_ggc_mx_align_stack (X);\
  } while (0)
extern void gt_ggc_mx_align_stack (void *);
#define gt_ggc_m_18VEC_tree_gc_vec_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_tree_gc_vec_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_tree_gc_vec_gc (void *);
#define gt_ggc_m_19VEC_const_char_p_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_const_char_p_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_const_char_p_gc (void *);
#define gt_ggc_m_21pending_abstract_type(X) do { \
  if (X != NULL) gt_ggc_mx_pending_abstract_type (X);\
  } while (0)
extern void gt_ggc_mx_pending_abstract_type (void *);
#define gt_ggc_m_15VEC_tree_int_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_tree_int_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_tree_int_gc (void *);
#define gt_ggc_m_9cp_parser(X) do { \
  if (X != NULL) gt_ggc_mx_cp_parser (X);\
  } while (0)
extern void gt_ggc_mx_cp_parser (void *);
#define gt_ggc_m_17cp_parser_context(X) do { \
  if (X != NULL) gt_ggc_mx_cp_parser_context (X);\
  } while (0)
extern void gt_ggc_mx_cp_parser_context (void *);
#define gt_ggc_m_8cp_lexer(X) do { \
  if (X != NULL) gt_ggc_mx_cp_lexer (X);\
  } while (0)
extern void gt_ggc_mx_cp_lexer (void *);
#define gt_ggc_m_10tree_check(X) do { \
  if (X != NULL) gt_ggc_mx_tree_check (X);\
  } while (0)
extern void gt_ggc_mx_tree_check (void *);
#define gt_ggc_m_22VEC_deferred_access_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_deferred_access_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_deferred_access_gc (void *);
#define gt_ggc_m_10spec_entry(X) do { \
  if (X != NULL) gt_ggc_mx_spec_entry (X);\
  } while (0)
extern void gt_ggc_mx_spec_entry (void *);
#define gt_ggc_m_16pending_template(X) do { \
  if (X != NULL) gt_ggc_mx_pending_template (X);\
  } while (0)
extern void gt_ggc_mx_pending_template (void *);
#define gt_ggc_m_21named_label_use_entry(X) do { \
  if (X != NULL) gt_ggc_mx_named_label_use_entry (X);\
  } while (0)
extern void gt_ggc_mx_named_label_use_entry (void *);
#define gt_ggc_m_28VEC_deferred_access_check_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_deferred_access_check_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_deferred_access_check_gc (void *);
#define gt_ggc_m_18sorted_fields_type(X) do { \
  if (X != NULL) gt_ggc_mx_sorted_fields_type (X);\
  } while (0)
extern void gt_ggc_mx_sorted_fields_type (void *);
#define gt_ggc_m_18VEC_tree_pair_s_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_tree_pair_s_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_tree_pair_s_gc (void *);
#define gt_ggc_m_17named_label_entry(X) do { \
  if (X != NULL) gt_ggc_mx_named_label_entry (X);\
  } while (0)
extern void gt_ggc_mx_named_label_entry (void *);
#define gt_ggc_m_32VEC_qualified_typedef_usage_t_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_qualified_typedef_usage_t_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_qualified_typedef_usage_t_gc (void *);
#define gt_ggc_m_14cp_token_cache(X) do { \
  if (X != NULL) gt_ggc_mx_cp_token_cache (X);\
  } while (0)
extern void gt_ggc_mx_cp_token_cache (void *);
#define gt_ggc_m_11saved_scope(X) do { \
  if (X != NULL) gt_ggc_mx_saved_scope (X);\
  } while (0)
extern void gt_ggc_mx_saved_scope (void *);
#define gt_ggc_m_16cxx_int_tree_map(X) do { \
  if (X != NULL) gt_ggc_mx_cxx_int_tree_map (X);\
  } while (0)
extern void gt_ggc_mx_cxx_int_tree_map (void *);
#define gt_ggc_m_23VEC_cp_class_binding_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_cp_class_binding_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_cp_class_binding_gc (void *);
#define gt_ggc_m_24VEC_cxx_saved_binding_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_cxx_saved_binding_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_cxx_saved_binding_gc (void *);
#define gt_ggc_m_16cp_binding_level(X) do { \
  if (X != NULL) gt_ggc_mx_cp_binding_level (X);\
  } while (0)
extern void gt_ggc_mx_cp_binding_level (void *);
#define gt_ggc_m_11cxx_binding(X) do { \
  if (X != NULL) gt_ggc_mx_cxx_binding (X);\
  } while (0)
extern void gt_ggc_mx_cxx_binding (void *);
#define gt_ggc_m_15binding_entry_s(X) do { \
  if (X != NULL) gt_ggc_mx_binding_entry_s (X);\
  } while (0)
extern void gt_ggc_mx_binding_entry_s (void *);
#define gt_ggc_m_15binding_table_s(X) do { \
  if (X != NULL) gt_ggc_mx_binding_table_s (X);\
  } while (0)
extern void gt_ggc_mx_binding_table_s (void *);
#define gt_ggc_m_11tinst_level(X) do { \
  if (X != NULL) gt_ggc_mx_tinst_level (X);\
  } while (0)
extern void gt_ggc_mx_tinst_level (void *);
#define gt_ggc_m_14VEC_tinfo_s_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_tinfo_s_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_tinfo_s_gc (void *);
#define gt_ggc_m_18gnat_binding_level(X) do { \
  if (X != NULL) gt_ggc_mx_gnat_binding_level (X);\
  } while (0)
extern void gt_ggc_mx_gnat_binding_level (void *);
#define gt_ggc_m_9elab_info(X) do { \
  if (X != NULL) gt_ggc_mx_elab_info (X);\
  } while (0)
extern void gt_ggc_mx_elab_info (void *);
#define gt_ggc_m_10stmt_group(X) do { \
  if (X != NULL) gt_ggc_mx_stmt_group (X);\
  } while (0)
extern void gt_ggc_mx_stmt_group (void *);
#define gt_ggc_m_16VEC_parm_attr_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_parm_attr_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_parm_attr_gc (void *);
#define gt_ggc_m_11parm_attr_d(X) do { \
  if (X != NULL) gt_ggc_mx_parm_attr_d (X);\
  } while (0)
extern void gt_ggc_mx_parm_attr_d (void *);
#define gt_ggc_m_22VEC_ipa_edge_args_t_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_ipa_edge_args_t_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_ipa_edge_args_t_gc (void *);
#define gt_ggc_m_20lto_symtab_entry_def(X) do { \
  if (X != NULL) gt_ggc_mx_lto_symtab_entry_def (X);\
  } while (0)
extern void gt_ggc_mx_lto_symtab_entry_def (void *);
#define gt_ggc_m_18mips16_local_alias(X) do { \
  if (X != NULL) gt_ggc_mx_mips16_local_alias (X);\
  } while (0)
extern void gt_ggc_mx_mips16_local_alias (void *);
#define gt_ggc_m_18mflip_mips16_entry(X) do { \
  if (X != NULL) gt_ggc_mx_mflip_mips16_entry (X);\
  } while (0)
extern void gt_ggc_mx_mflip_mips16_entry (void *);
#define gt_ggc_m_20ssa_operand_memory_d(X) do { \
  if (X != NULL) gt_ggc_mx_ssa_operand_memory_d (X);\
  } while (0)
extern void gt_ggc_mx_ssa_operand_memory_d (void *);
#define gt_ggc_m_13scev_info_str(X) do { \
  if (X != NULL) gt_ggc_mx_scev_info_str (X);\
  } while (0)
extern void gt_ggc_mx_scev_info_str (void *);
#define gt_ggc_m_24VEC_mem_addr_template_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_mem_addr_template_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_mem_addr_template_gc (void *);
#define gt_ggc_m_13VEC_gimple_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_gimple_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_gimple_gc (void *);
#define gt_ggc_m_9type_hash(X) do { \
  if (X != NULL) gt_ggc_mx_type_hash (X);\
  } while (0)
extern void gt_ggc_mx_type_hash (void *);
#define gt_ggc_m_16string_pool_data(X) do { \
  if (X != NULL) gt_ggc_mx_string_pool_data (X);\
  } while (0)
extern void gt_ggc_mx_string_pool_data (void *);
#define gt_ggc_m_13libfunc_entry(X) do { \
  if (X != NULL) gt_ggc_mx_libfunc_entry (X);\
  } while (0)
extern void gt_ggc_mx_libfunc_entry (void *);
#define gt_ggc_m_23temp_slot_address_entry(X) do { \
  if (X != NULL) gt_ggc_mx_temp_slot_address_entry (X);\
  } while (0)
extern void gt_ggc_mx_temp_slot_address_entry (void *);
#define gt_ggc_m_15throw_stmt_node(X) do { \
  if (X != NULL) gt_ggc_mx_throw_stmt_node (X);\
  } while (0)
extern void gt_ggc_mx_throw_stmt_node (void *);
#define gt_ggc_m_21VEC_eh_landing_pad_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_eh_landing_pad_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_eh_landing_pad_gc (void *);
#define gt_ggc_m_16VEC_eh_region_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_eh_region_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_eh_region_gc (void *);
#define gt_ggc_m_10eh_catch_d(X) do { \
  if (X != NULL) gt_ggc_mx_eh_catch_d (X);\
  } while (0)
extern void gt_ggc_mx_eh_catch_d (void *);
#define gt_ggc_m_16eh_landing_pad_d(X) do { \
  if (X != NULL) gt_ggc_mx_eh_landing_pad_d (X);\
  } while (0)
extern void gt_ggc_mx_eh_landing_pad_d (void *);
#define gt_ggc_m_11eh_region_d(X) do { \
  if (X != NULL) gt_ggc_mx_eh_region_d (X);\
  } while (0)
extern void gt_ggc_mx_eh_region_d (void *);
#define gt_ggc_m_10vcall_insn(X) do { \
  if (X != NULL) gt_ggc_mx_vcall_insn (X);\
  } while (0)
extern void gt_ggc_mx_vcall_insn (void *);
#define gt_ggc_m_18VEC_vcall_entry_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_vcall_entry_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_vcall_entry_gc (void *);
#define gt_ggc_m_18VEC_dcall_entry_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_dcall_entry_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_dcall_entry_gc (void *);
#define gt_ggc_m_16var_loc_list_def(X) do { \
  if (X != NULL) gt_ggc_mx_var_loc_list_def (X);\
  } while (0)
extern void gt_ggc_mx_var_loc_list_def (void *);
#define gt_ggc_m_12var_loc_node(X) do { \
  if (X != NULL) gt_ggc_mx_var_loc_node (X);\
  } while (0)
extern void gt_ggc_mx_var_loc_node (void *);
#define gt_ggc_m_20VEC_die_arg_entry_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_die_arg_entry_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_die_arg_entry_gc (void *);
#define gt_ggc_m_16limbo_die_struct(X) do { \
  if (X != NULL) gt_ggc_mx_limbo_die_struct (X);\
  } while (0)
extern void gt_ggc_mx_limbo_die_struct (void *);
#define gt_ggc_m_20VEC_pubname_entry_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_pubname_entry_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_pubname_entry_gc (void *);
#define gt_ggc_m_19VEC_dw_attr_node_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_dw_attr_node_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_dw_attr_node_gc (void *);
#define gt_ggc_m_18comdat_type_struct(X) do { \
  if (X != NULL) gt_ggc_mx_comdat_type_struct (X);\
  } while (0)
extern void gt_ggc_mx_comdat_type_struct (void *);
#define gt_ggc_m_25dw_ranges_by_label_struct(X) do { \
  if (X != NULL) gt_ggc_mx_dw_ranges_by_label_struct (X);\
  } while (0)
extern void gt_ggc_mx_dw_ranges_by_label_struct (void *);
#define gt_ggc_m_16dw_ranges_struct(X) do { \
  if (X != NULL) gt_ggc_mx_dw_ranges_struct (X);\
  } while (0)
extern void gt_ggc_mx_dw_ranges_struct (void *);
#define gt_ggc_m_28dw_separate_line_info_struct(X) do { \
  if (X != NULL) gt_ggc_mx_dw_separate_line_info_struct (X);\
  } while (0)
extern void gt_ggc_mx_dw_separate_line_info_struct (void *);
#define gt_ggc_m_19dw_line_info_struct(X) do { \
  if (X != NULL) gt_ggc_mx_dw_line_info_struct (X);\
  } while (0)
extern void gt_ggc_mx_dw_line_info_struct (void *);
#define gt_ggc_m_25VEC_deferred_locations_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_deferred_locations_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_deferred_locations_gc (void *);
#define gt_ggc_m_18dw_loc_list_struct(X) do { \
  if (X != NULL) gt_ggc_mx_dw_loc_list_struct (X);\
  } while (0)
extern void gt_ggc_mx_dw_loc_list_struct (void *);
#define gt_ggc_m_15dwarf_file_data(X) do { \
  if (X != NULL) gt_ggc_mx_dwarf_file_data (X);\
  } while (0)
extern void gt_ggc_mx_dwarf_file_data (void *);
#define gt_ggc_m_15queued_reg_save(X) do { \
  if (X != NULL) gt_ggc_mx_queued_reg_save (X);\
  } while (0)
extern void gt_ggc_mx_queued_reg_save (void *);
#define gt_ggc_m_20indirect_string_node(X) do { \
  if (X != NULL) gt_ggc_mx_indirect_string_node (X);\
  } while (0)
extern void gt_ggc_mx_indirect_string_node (void *);
#define gt_ggc_m_19dw_loc_descr_struct(X) do { \
  if (X != NULL) gt_ggc_mx_dw_loc_descr_struct (X);\
  } while (0)
extern void gt_ggc_mx_dw_loc_descr_struct (void *);
#define gt_ggc_m_13dw_fde_struct(X) do { \
  if (X != NULL) gt_ggc_mx_dw_fde_struct (X);\
  } while (0)
extern void gt_ggc_mx_dw_fde_struct (void *);
#define gt_ggc_m_13dw_cfi_struct(X) do { \
  if (X != NULL) gt_ggc_mx_dw_cfi_struct (X);\
  } while (0)
extern void gt_ggc_mx_dw_cfi_struct (void *);
#define gt_ggc_m_8typeinfo(X) do { \
  if (X != NULL) gt_ggc_mx_typeinfo (X);\
  } while (0)
extern void gt_ggc_mx_typeinfo (void *);
#define gt_ggc_m_22VEC_alias_set_entry_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_alias_set_entry_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_alias_set_entry_gc (void *);
#define gt_ggc_m_17alias_set_entry_d(X) do { \
  if (X != NULL) gt_ggc_mx_alias_set_entry_d (X);\
  } while (0)
extern void gt_ggc_mx_alias_set_entry_d (void *);
#define gt_ggc_m_24constant_descriptor_tree(X) do { \
  if (X != NULL) gt_ggc_mx_constant_descriptor_tree (X);\
  } while (0)
extern void gt_ggc_mx_constant_descriptor_tree (void *);
#define gt_ggc_m_15cgraph_asm_node(X) do { \
  if (X != NULL) gt_ggc_mx_cgraph_asm_node (X);\
  } while (0)
extern void gt_ggc_mx_cgraph_asm_node (void *);
#define gt_ggc_m_12varpool_node(X) do { \
  if (X != NULL) gt_ggc_mx_varpool_node (X);\
  } while (0)
extern void gt_ggc_mx_varpool_node (void *);
#define gt_ggc_m_22VEC_cgraph_node_set_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_cgraph_node_set_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_cgraph_node_set_gc (void *);
#define gt_ggc_m_19cgraph_node_set_def(X) do { \
  if (X != NULL) gt_ggc_mx_cgraph_node_set_def (X);\
  } while (0)
extern void gt_ggc_mx_cgraph_node_set_def (void *);
#define gt_ggc_m_27cgraph_node_set_element_def(X) do { \
  if (X != NULL) gt_ggc_mx_cgraph_node_set_element_def (X);\
  } while (0)
extern void gt_ggc_mx_cgraph_node_set_element_def (void *);
#define gt_ggc_m_22VEC_cgraph_node_ptr_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_cgraph_node_ptr_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_cgraph_node_ptr_gc (void *);
#define gt_ggc_m_11cgraph_edge(X) do { \
  if (X != NULL) gt_ggc_mx_cgraph_edge (X);\
  } while (0)
extern void gt_ggc_mx_cgraph_edge (void *);
#define gt_ggc_m_24VEC_ipa_replace_map_p_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_ipa_replace_map_p_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_ipa_replace_map_p_gc (void *);
#define gt_ggc_m_15ipa_replace_map(X) do { \
  if (X != NULL) gt_ggc_mx_ipa_replace_map (X);\
  } while (0)
extern void gt_ggc_mx_ipa_replace_map (void *);
#define gt_ggc_m_11cgraph_node(X) do { \
  if (X != NULL) gt_ggc_mx_cgraph_node (X);\
  } while (0)
extern void gt_ggc_mx_cgraph_node (void *);
#define gt_ggc_m_18VEC_basic_block_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_basic_block_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_basic_block_gc (void *);
#define gt_ggc_m_14gimple_bb_info(X) do { \
  if (X != NULL) gt_ggc_mx_gimple_bb_info (X);\
  } while (0)
extern void gt_ggc_mx_gimple_bb_info (void *);
#define gt_ggc_m_11rtl_bb_info(X) do { \
  if (X != NULL) gt_ggc_mx_rtl_bb_info (X);\
  } while (0)
extern void gt_ggc_mx_rtl_bb_info (void *);
#define gt_ggc_m_11VEC_edge_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_edge_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_edge_gc (void *);
#define gt_ggc_m_17cselib_val_struct(X) do { \
  if (X != NULL) gt_ggc_mx_cselib_val_struct (X);\
  } while (0)
extern void gt_ggc_mx_cselib_val_struct (void *);
#define gt_ggc_m_12elt_loc_list(X) do { \
  if (X != NULL) gt_ggc_mx_elt_loc_list (X);\
  } while (0)
extern void gt_ggc_mx_elt_loc_list (void *);
#define gt_ggc_m_13VEC_loop_p_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_loop_p_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_loop_p_gc (void *);
#define gt_ggc_m_4loop(X) do { \
  if (X != NULL) gt_ggc_mx_loop (X);\
  } while (0)
extern void gt_ggc_mx_loop (void *);
#define gt_ggc_m_9loop_exit(X) do { \
  if (X != NULL) gt_ggc_mx_loop_exit (X);\
  } while (0)
extern void gt_ggc_mx_loop_exit (void *);
#define gt_ggc_m_13nb_iter_bound(X) do { \
  if (X != NULL) gt_ggc_mx_nb_iter_bound (X);\
  } while (0)
extern void gt_ggc_mx_nb_iter_bound (void *);
#define gt_ggc_m_24types_used_by_vars_entry(X) do { \
  if (X != NULL) gt_ggc_mx_types_used_by_vars_entry (X);\
  } while (0)
extern void gt_ggc_mx_types_used_by_vars_entry (void *);
#define gt_ggc_m_17language_function(X) do { \
  if (X != NULL) gt_ggc_mx_language_function (X);\
  } while (0)
extern void gt_ggc_mx_language_function (void *);
#define gt_ggc_m_16machine_function(X) do { \
  if (X != NULL) gt_ggc_mx_machine_function (X);\
  } while (0)
extern void gt_ggc_mx_machine_function (void *);
#define gt_ggc_m_5loops(X) do { \
  if (X != NULL) gt_ggc_mx_loops (X);\
  } while (0)
extern void gt_ggc_mx_loops (void *);
#define gt_ggc_m_18control_flow_graph(X) do { \
  if (X != NULL) gt_ggc_mx_control_flow_graph (X);\
  } while (0)
extern void gt_ggc_mx_control_flow_graph (void *);
#define gt_ggc_m_9eh_status(X) do { \
  if (X != NULL) gt_ggc_mx_eh_status (X);\
  } while (0)
extern void gt_ggc_mx_eh_status (void *);
#define gt_ggc_m_20initial_value_struct(X) do { \
  if (X != NULL) gt_ggc_mx_initial_value_struct (X);\
  } while (0)
extern void gt_ggc_mx_initial_value_struct (void *);
#define gt_ggc_m_17rtx_constant_pool(X) do { \
  if (X != NULL) gt_ggc_mx_rtx_constant_pool (X);\
  } while (0)
extern void gt_ggc_mx_rtx_constant_pool (void *);
#define gt_ggc_m_18VEC_temp_slot_p_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_temp_slot_p_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_temp_slot_p_gc (void *);
#define gt_ggc_m_9temp_slot(X) do { \
  if (X != NULL) gt_ggc_mx_temp_slot (X);\
  } while (0)
extern void gt_ggc_mx_temp_slot (void *);
#define gt_ggc_m_9gimple_df(X) do { \
  if (X != NULL) gt_ggc_mx_gimple_df (X);\
  } while (0)
extern void gt_ggc_mx_gimple_df (void *);
#define gt_ggc_m_23VEC_call_site_record_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_call_site_record_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_call_site_record_gc (void *);
#define gt_ggc_m_18call_site_record_d(X) do { \
  if (X != NULL) gt_ggc_mx_call_site_record_d (X);\
  } while (0)
extern void gt_ggc_mx_call_site_record_d (void *);
#define gt_ggc_m_14sequence_stack(X) do { \
  if (X != NULL) gt_ggc_mx_sequence_stack (X);\
  } while (0)
extern void gt_ggc_mx_sequence_stack (void *);
#define gt_ggc_m_8elt_list(X) do { \
  if (X != NULL) gt_ggc_mx_elt_list (X);\
  } while (0)
extern void gt_ggc_mx_elt_list (void *);
#define gt_ggc_m_17tree_priority_map(X) do { \
  if (X != NULL) gt_ggc_mx_tree_priority_map (X);\
  } while (0)
extern void gt_ggc_mx_tree_priority_map (void *);
#define gt_ggc_m_12tree_int_map(X) do { \
  if (X != NULL) gt_ggc_mx_tree_int_map (X);\
  } while (0)
extern void gt_ggc_mx_tree_int_map (void *);
#define gt_ggc_m_8tree_map(X) do { \
  if (X != NULL) gt_ggc_mx_tree_map (X);\
  } while (0)
extern void gt_ggc_mx_tree_map (void *);
#define gt_ggc_m_14lang_tree_node(X) do { \
  if (X != NULL) gt_ggc_mx_lang_tree_node (X);\
  } while (0)
extern void gt_ggc_mx_lang_tree_node (void *);
#define gt_ggc_m_24tree_statement_list_node(X) do { \
  if (X != NULL) gt_ggc_mx_tree_statement_list_node (X);\
  } while (0)
extern void gt_ggc_mx_tree_statement_list_node (void *);
#define gt_ggc_m_9var_ann_d(X) do { \
  if (X != NULL) gt_ggc_mx_var_ann_d (X);\
  } while (0)
extern void gt_ggc_mx_var_ann_d (void *);
#define gt_ggc_m_9lang_decl(X) do { \
  if (X != NULL) gt_ggc_mx_lang_decl (X);\
  } while (0)
extern void gt_ggc_mx_lang_decl (void *);
#define gt_ggc_m_9lang_type(X) do { \
  if (X != NULL) gt_ggc_mx_lang_type (X);\
  } while (0)
extern void gt_ggc_mx_lang_type (void *);
#define gt_ggc_m_10die_struct(X) do { \
  if (X != NULL) gt_ggc_mx_die_struct (X);\
  } while (0)
extern void gt_ggc_mx_die_struct (void *);
#define gt_ggc_m_15varray_head_tag(X) do { \
  if (X != NULL) gt_ggc_mx_varray_head_tag (X);\
  } while (0)
extern void gt_ggc_mx_varray_head_tag (void *);
#define gt_ggc_m_12ptr_info_def(X) do { \
  if (X != NULL) gt_ggc_mx_ptr_info_def (X);\
  } while (0)
extern void gt_ggc_mx_ptr_info_def (void *);
#define gt_ggc_m_22VEC_constructor_elt_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_constructor_elt_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_constructor_elt_gc (void *);
#define gt_ggc_m_17VEC_alias_pair_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_alias_pair_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_alias_pair_gc (void *);
#define gt_ggc_m_11VEC_tree_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_tree_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_tree_gc (void *);
#define gt_ggc_m_12VEC_uchar_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_uchar_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_uchar_gc (void *);
#define gt_ggc_m_8function(X) do { \
  if (X != NULL) gt_ggc_mx_function (X);\
  } while (0)
extern void gt_ggc_mx_function (void *);
#define gt_ggc_m_23constant_descriptor_rtx(X) do { \
  if (X != NULL) gt_ggc_mx_constant_descriptor_rtx (X);\
  } while (0)
extern void gt_ggc_mx_constant_descriptor_rtx (void *);
#define gt_ggc_m_11fixed_value(X) do { \
  if (X != NULL) gt_ggc_mx_fixed_value (X);\
  } while (0)
extern void gt_ggc_mx_fixed_value (void *);
#define gt_ggc_m_10real_value(X) do { \
  if (X != NULL) gt_ggc_mx_real_value (X);\
  } while (0)
extern void gt_ggc_mx_real_value (void *);
#define gt_ggc_m_10VEC_rtx_gc(X) do { \
  if (X != NULL) gt_ggc_mx_VEC_rtx_gc (X);\
  } while (0)
extern void gt_ggc_mx_VEC_rtx_gc (void *);
#define gt_ggc_m_12object_block(X) do { \
  if (X != NULL) gt_ggc_mx_object_block (X);\
  } while (0)
extern void gt_ggc_mx_object_block (void *);
#define gt_ggc_m_9reg_attrs(X) do { \
  if (X != NULL) gt_ggc_mx_reg_attrs (X);\
  } while (0)
extern void gt_ggc_mx_reg_attrs (void *);
#define gt_ggc_m_9mem_attrs(X) do { \
  if (X != NULL) gt_ggc_mx_mem_attrs (X);\
  } while (0)
extern void gt_ggc_mx_mem_attrs (void *);
#define gt_ggc_m_14bitmap_obstack(X) do { \
  if (X != NULL) gt_ggc_mx_bitmap_obstack (X);\
  } while (0)
extern void gt_ggc_mx_bitmap_obstack (void *);
#define gt_ggc_m_18bitmap_element_def(X) do { \
  if (X != NULL) gt_ggc_mx_bitmap_element_def (X);\
  } while (0)
extern void gt_ggc_mx_bitmap_element_def (void *);
#define gt_ggc_m_15basic_block_def(X) do { \
  if (X != NULL) gt_ggc_mx_basic_block_def (X);\
  } while (0)
extern void gt_ggc_mx_basic_block_def (void *);
#define gt_ggc_m_8edge_def(X) do { \
  if (X != NULL) gt_ggc_mx_edge_def (X);\
  } while (0)
extern void gt_ggc_mx_edge_def (void *);
#define gt_ggc_m_17gimple_seq_node_d(X) do { \
  if (X != NULL) gt_ggc_mx_gimple_seq_node_d (X);\
  } while (0)
extern void gt_ggc_mx_gimple_seq_node_d (void *);
#define gt_ggc_m_12gimple_seq_d(X) do { \
  if (X != NULL) gt_ggc_mx_gimple_seq_d (X);\
  } while (0)
extern void gt_ggc_mx_gimple_seq_d (void *);
#define gt_ggc_m_7section(X) do { \
  if (X != NULL) gt_ggc_mx_section (X);\
  } while (0)
extern void gt_ggc_mx_section (void *);
#define gt_ggc_m_18gimple_statement_d(X) do { \
  if (X != NULL) gt_ggc_mx_gimple_statement_d (X);\
  } while (0)
extern void gt_ggc_mx_gimple_statement_d (void *);
#define gt_ggc_m_9rtvec_def(X) do { \
  if (X != NULL) gt_ggc_mx_rtvec_def (X);\
  } while (0)
extern void gt_ggc_mx_rtvec_def (void *);
#define gt_ggc_m_7rtx_def(X) do { \
  if (X != NULL) gt_ggc_mx_rtx_def (X);\
  } while (0)
extern void gt_ggc_mx_rtx_def (void *);
#define gt_ggc_m_15bitmap_head_def(X) do { \
  if (X != NULL) gt_ggc_mx_bitmap_head_def (X);\
  } while (0)
extern void gt_ggc_mx_bitmap_head_def (void *);
#define gt_ggc_m_9tree_node(X) do { \
  if (X != NULL) gt_ggc_mx_tree_node (X);\
  } while (0)
#define gt_ggc_mx_tree_node gt_ggc_mx_lang_tree_node
#define gt_ggc_m_6answer(X) do { \
  if (X != NULL) gt_ggc_mx_answer (X);\
  } while (0)
extern void gt_ggc_mx_answer (void *);
#define gt_ggc_m_9cpp_macro(X) do { \
  if (X != NULL) gt_ggc_mx_cpp_macro (X);\
  } while (0)
extern void gt_ggc_mx_cpp_macro (void *);
#define gt_ggc_m_9cpp_token(X) do { \
  if (X != NULL) gt_ggc_mx_cpp_token (X);\
  } while (0)
extern void gt_ggc_mx_cpp_token (void *);
#define gt_ggc_m_9line_maps(X) do { \
  if (X != NULL) gt_ggc_mx_line_maps (X);\
  } while (0)
extern void gt_ggc_mx_line_maps (void *);
extern void gt_ggc_m_II17splay_tree_node_s (void *);
extern void gt_ggc_m_SP9tree_node17splay_tree_node_s (void *);
extern void gt_ggc_m_P9tree_nodeP9tree_node17splay_tree_node_s (void *);
extern void gt_ggc_m_IP9tree_node17splay_tree_node_s (void *);
extern void gt_ggc_m_P15interface_tuple4htab (void *);
extern void gt_ggc_m_P16volatilized_type4htab (void *);
extern void gt_ggc_m_P17string_descriptor4htab (void *);
extern void gt_ggc_m_P14type_assertion4htab (void *);
extern void gt_ggc_m_P18treetreehash_entry4htab (void *);
extern void gt_ggc_m_P17module_htab_entry4htab (void *);
extern void gt_ggc_m_P21pending_abstract_type4htab (void *);
extern void gt_ggc_m_P10spec_entry4htab (void *);
extern void gt_ggc_m_P16cxx_int_tree_map4htab (void *);
extern void gt_ggc_m_P17named_label_entry4htab (void *);
extern void gt_ggc_m_P12tree_int_map4htab (void *);
extern void gt_ggc_m_P20lto_symtab_entry_def4htab (void *);
extern void gt_ggc_m_IP9tree_node12splay_tree_s (void *);
extern void gt_ggc_m_P18mips16_local_alias4htab (void *);
extern void gt_ggc_m_P18mflip_mips16_entry4htab (void *);
extern void gt_ggc_m_P9tree_nodeP9tree_node12splay_tree_s (void *);
extern void gt_ggc_m_P12varpool_node4htab (void *);
extern void gt_ggc_m_P13scev_info_str4htab (void *);
extern void gt_ggc_m_P23constant_descriptor_rtx4htab (void *);
extern void gt_ggc_m_P24constant_descriptor_tree4htab (void *);
extern void gt_ggc_m_P12object_block4htab (void *);
extern void gt_ggc_m_P7section4htab (void *);
extern void gt_ggc_m_P17tree_priority_map4htab (void *);
extern void gt_ggc_m_P8tree_map4htab (void *);
extern void gt_ggc_m_P9type_hash4htab (void *);
extern void gt_ggc_m_P13libfunc_entry4htab (void *);
extern void gt_ggc_m_P23temp_slot_address_entry4htab (void *);
extern void gt_ggc_m_P15throw_stmt_node4htab (void *);
extern void gt_ggc_m_P9reg_attrs4htab (void *);
extern void gt_ggc_m_P9mem_attrs4htab (void *);
extern void gt_ggc_m_P7rtx_def4htab (void *);
extern void gt_ggc_m_SP9tree_node12splay_tree_s (void *);
extern void gt_ggc_m_P10vcall_insn4htab (void *);
extern void gt_ggc_m_P16var_loc_list_def4htab (void *);
extern void gt_ggc_m_P10die_struct4htab (void *);
extern void gt_ggc_m_P15dwarf_file_data4htab (void *);
extern void gt_ggc_m_P20indirect_string_node4htab (void *);
extern void gt_ggc_m_P11cgraph_node4htab (void *);
extern void gt_ggc_m_II12splay_tree_s (void *);
extern void gt_ggc_m_P27cgraph_node_set_element_def4htab (void *);
extern void gt_ggc_m_P11cgraph_edge4htab (void *);
extern void gt_ggc_m_P9loop_exit4htab (void *);
extern void gt_ggc_m_P24types_used_by_vars_entry4htab (void *);
extern void gt_ggc_m_P9tree_node4htab (void *);

/* functions code */

/* PCH type-walking procedures.  */
/* macros and declarations */
#define gt_pch_n_15interface_tuple(X) do { \
  if (X != NULL) gt_pch_nx_interface_tuple (X);\
  } while (0)
extern void gt_pch_nx_interface_tuple (void *);
#define gt_pch_n_16volatilized_type(X) do { \
  if (X != NULL) gt_pch_nx_volatilized_type (X);\
  } while (0)
extern void gt_pch_nx_volatilized_type (void *);
#define gt_pch_n_17string_descriptor(X) do { \
  if (X != NULL) gt_pch_nx_string_descriptor (X);\
  } while (0)
extern void gt_pch_nx_string_descriptor (void *);
#define gt_pch_n_15c_inline_static(X) do { \
  if (X != NULL) gt_pch_nx_c_inline_static (X);\
  } while (0)
extern void gt_pch_nx_c_inline_static (void *);
#define gt_pch_n_24VEC_c_goto_bindings_p_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_c_goto_bindings_p_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_c_goto_bindings_p_gc (void *);
#define gt_pch_n_15c_goto_bindings(X) do { \
  if (X != NULL) gt_pch_nx_c_goto_bindings (X);\
  } while (0)
extern void gt_pch_nx_c_goto_bindings (void *);
#define gt_pch_n_7c_scope(X) do { \
  if (X != NULL) gt_pch_nx_c_scope (X);\
  } while (0)
extern void gt_pch_nx_c_scope (void *);
#define gt_pch_n_9c_binding(X) do { \
  if (X != NULL) gt_pch_nx_c_binding (X);\
  } while (0)
extern void gt_pch_nx_c_binding (void *);
#define gt_pch_n_12c_label_vars(X) do { \
  if (X != NULL) gt_pch_nx_c_label_vars (X);\
  } while (0)
extern void gt_pch_nx_c_label_vars (void *);
#define gt_pch_n_8c_parser(X) do { \
  if (X != NULL) gt_pch_nx_c_parser (X);\
  } while (0)
extern void gt_pch_nx_c_parser (void *);
#define gt_pch_n_9imp_entry(X) do { \
  if (X != NULL) gt_pch_nx_imp_entry (X);\
  } while (0)
extern void gt_pch_nx_imp_entry (void *);
#define gt_pch_n_16hashed_attribute(X) do { \
  if (X != NULL) gt_pch_nx_hashed_attribute (X);\
  } while (0)
extern void gt_pch_nx_hashed_attribute (void *);
#define gt_pch_n_12hashed_entry(X) do { \
  if (X != NULL) gt_pch_nx_hashed_entry (X);\
  } while (0)
extern void gt_pch_nx_hashed_entry (void *);
#define gt_pch_n_14type_assertion(X) do { \
  if (X != NULL) gt_pch_nx_type_assertion (X);\
  } while (0)
extern void gt_pch_nx_type_assertion (void *);
#define gt_pch_n_18treetreehash_entry(X) do { \
  if (X != NULL) gt_pch_nx_treetreehash_entry (X);\
  } while (0)
extern void gt_pch_nx_treetreehash_entry (void *);
#define gt_pch_n_5CPool(X) do { \
  if (X != NULL) gt_pch_nx_CPool (X);\
  } while (0)
extern void gt_pch_nx_CPool (void *);
#define gt_pch_n_3JCF(X) do { \
  if (X != NULL) gt_pch_nx_JCF (X);\
  } while (0)
extern void gt_pch_nx_JCF (void *);
#define gt_pch_n_17module_htab_entry(X) do { \
  if (X != NULL) gt_pch_nx_module_htab_entry (X);\
  } while (0)
extern void gt_pch_nx_module_htab_entry (void *);
#define gt_pch_n_13binding_level(X) do { \
  if (X != NULL) gt_pch_nx_binding_level (X);\
  } while (0)
extern void gt_pch_nx_binding_level (void *);
#define gt_pch_n_9opt_stack(X) do { \
  if (X != NULL) gt_pch_nx_opt_stack (X);\
  } while (0)
extern void gt_pch_nx_opt_stack (void *);
#define gt_pch_n_11align_stack(X) do { \
  if (X != NULL) gt_pch_nx_align_stack (X);\
  } while (0)
extern void gt_pch_nx_align_stack (void *);
#define gt_pch_n_18VEC_tree_gc_vec_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_tree_gc_vec_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_tree_gc_vec_gc (void *);
#define gt_pch_n_19VEC_const_char_p_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_const_char_p_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_const_char_p_gc (void *);
#define gt_pch_n_21pending_abstract_type(X) do { \
  if (X != NULL) gt_pch_nx_pending_abstract_type (X);\
  } while (0)
extern void gt_pch_nx_pending_abstract_type (void *);
#define gt_pch_n_15VEC_tree_int_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_tree_int_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_tree_int_gc (void *);
#define gt_pch_n_9cp_parser(X) do { \
  if (X != NULL) gt_pch_nx_cp_parser (X);\
  } while (0)
extern void gt_pch_nx_cp_parser (void *);
#define gt_pch_n_17cp_parser_context(X) do { \
  if (X != NULL) gt_pch_nx_cp_parser_context (X);\
  } while (0)
extern void gt_pch_nx_cp_parser_context (void *);
#define gt_pch_n_8cp_lexer(X) do { \
  if (X != NULL) gt_pch_nx_cp_lexer (X);\
  } while (0)
extern void gt_pch_nx_cp_lexer (void *);
#define gt_pch_n_10tree_check(X) do { \
  if (X != NULL) gt_pch_nx_tree_check (X);\
  } while (0)
extern void gt_pch_nx_tree_check (void *);
#define gt_pch_n_22VEC_deferred_access_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_deferred_access_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_deferred_access_gc (void *);
#define gt_pch_n_10spec_entry(X) do { \
  if (X != NULL) gt_pch_nx_spec_entry (X);\
  } while (0)
extern void gt_pch_nx_spec_entry (void *);
#define gt_pch_n_16pending_template(X) do { \
  if (X != NULL) gt_pch_nx_pending_template (X);\
  } while (0)
extern void gt_pch_nx_pending_template (void *);
#define gt_pch_n_21named_label_use_entry(X) do { \
  if (X != NULL) gt_pch_nx_named_label_use_entry (X);\
  } while (0)
extern void gt_pch_nx_named_label_use_entry (void *);
#define gt_pch_n_28VEC_deferred_access_check_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_deferred_access_check_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_deferred_access_check_gc (void *);
#define gt_pch_n_18sorted_fields_type(X) do { \
  if (X != NULL) gt_pch_nx_sorted_fields_type (X);\
  } while (0)
extern void gt_pch_nx_sorted_fields_type (void *);
#define gt_pch_n_18VEC_tree_pair_s_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_tree_pair_s_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_tree_pair_s_gc (void *);
#define gt_pch_n_17named_label_entry(X) do { \
  if (X != NULL) gt_pch_nx_named_label_entry (X);\
  } while (0)
extern void gt_pch_nx_named_label_entry (void *);
#define gt_pch_n_32VEC_qualified_typedef_usage_t_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_qualified_typedef_usage_t_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_qualified_typedef_usage_t_gc (void *);
#define gt_pch_n_14cp_token_cache(X) do { \
  if (X != NULL) gt_pch_nx_cp_token_cache (X);\
  } while (0)
extern void gt_pch_nx_cp_token_cache (void *);
#define gt_pch_n_11saved_scope(X) do { \
  if (X != NULL) gt_pch_nx_saved_scope (X);\
  } while (0)
extern void gt_pch_nx_saved_scope (void *);
#define gt_pch_n_16cxx_int_tree_map(X) do { \
  if (X != NULL) gt_pch_nx_cxx_int_tree_map (X);\
  } while (0)
extern void gt_pch_nx_cxx_int_tree_map (void *);
#define gt_pch_n_23VEC_cp_class_binding_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_cp_class_binding_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_cp_class_binding_gc (void *);
#define gt_pch_n_24VEC_cxx_saved_binding_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_cxx_saved_binding_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_cxx_saved_binding_gc (void *);
#define gt_pch_n_16cp_binding_level(X) do { \
  if (X != NULL) gt_pch_nx_cp_binding_level (X);\
  } while (0)
extern void gt_pch_nx_cp_binding_level (void *);
#define gt_pch_n_11cxx_binding(X) do { \
  if (X != NULL) gt_pch_nx_cxx_binding (X);\
  } while (0)
extern void gt_pch_nx_cxx_binding (void *);
#define gt_pch_n_15binding_entry_s(X) do { \
  if (X != NULL) gt_pch_nx_binding_entry_s (X);\
  } while (0)
extern void gt_pch_nx_binding_entry_s (void *);
#define gt_pch_n_15binding_table_s(X) do { \
  if (X != NULL) gt_pch_nx_binding_table_s (X);\
  } while (0)
extern void gt_pch_nx_binding_table_s (void *);
#define gt_pch_n_11tinst_level(X) do { \
  if (X != NULL) gt_pch_nx_tinst_level (X);\
  } while (0)
extern void gt_pch_nx_tinst_level (void *);
#define gt_pch_n_14VEC_tinfo_s_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_tinfo_s_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_tinfo_s_gc (void *);
#define gt_pch_n_18gnat_binding_level(X) do { \
  if (X != NULL) gt_pch_nx_gnat_binding_level (X);\
  } while (0)
extern void gt_pch_nx_gnat_binding_level (void *);
#define gt_pch_n_9elab_info(X) do { \
  if (X != NULL) gt_pch_nx_elab_info (X);\
  } while (0)
extern void gt_pch_nx_elab_info (void *);
#define gt_pch_n_10stmt_group(X) do { \
  if (X != NULL) gt_pch_nx_stmt_group (X);\
  } while (0)
extern void gt_pch_nx_stmt_group (void *);
#define gt_pch_n_16VEC_parm_attr_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_parm_attr_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_parm_attr_gc (void *);
#define gt_pch_n_11parm_attr_d(X) do { \
  if (X != NULL) gt_pch_nx_parm_attr_d (X);\
  } while (0)
extern void gt_pch_nx_parm_attr_d (void *);
#define gt_pch_n_22VEC_ipa_edge_args_t_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_ipa_edge_args_t_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_ipa_edge_args_t_gc (void *);
#define gt_pch_n_20lto_symtab_entry_def(X) do { \
  if (X != NULL) gt_pch_nx_lto_symtab_entry_def (X);\
  } while (0)
extern void gt_pch_nx_lto_symtab_entry_def (void *);
#define gt_pch_n_18mips16_local_alias(X) do { \
  if (X != NULL) gt_pch_nx_mips16_local_alias (X);\
  } while (0)
extern void gt_pch_nx_mips16_local_alias (void *);
#define gt_pch_n_18mflip_mips16_entry(X) do { \
  if (X != NULL) gt_pch_nx_mflip_mips16_entry (X);\
  } while (0)
extern void gt_pch_nx_mflip_mips16_entry (void *);
#define gt_pch_n_20ssa_operand_memory_d(X) do { \
  if (X != NULL) gt_pch_nx_ssa_operand_memory_d (X);\
  } while (0)
extern void gt_pch_nx_ssa_operand_memory_d (void *);
#define gt_pch_n_13scev_info_str(X) do { \
  if (X != NULL) gt_pch_nx_scev_info_str (X);\
  } while (0)
extern void gt_pch_nx_scev_info_str (void *);
#define gt_pch_n_24VEC_mem_addr_template_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_mem_addr_template_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_mem_addr_template_gc (void *);
#define gt_pch_n_13VEC_gimple_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_gimple_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_gimple_gc (void *);
#define gt_pch_n_9type_hash(X) do { \
  if (X != NULL) gt_pch_nx_type_hash (X);\
  } while (0)
extern void gt_pch_nx_type_hash (void *);
#define gt_pch_n_16string_pool_data(X) do { \
  if (X != NULL) gt_pch_nx_string_pool_data (X);\
  } while (0)
extern void gt_pch_nx_string_pool_data (void *);
#define gt_pch_n_13libfunc_entry(X) do { \
  if (X != NULL) gt_pch_nx_libfunc_entry (X);\
  } while (0)
extern void gt_pch_nx_libfunc_entry (void *);
#define gt_pch_n_23temp_slot_address_entry(X) do { \
  if (X != NULL) gt_pch_nx_temp_slot_address_entry (X);\
  } while (0)
extern void gt_pch_nx_temp_slot_address_entry (void *);
#define gt_pch_n_15throw_stmt_node(X) do { \
  if (X != NULL) gt_pch_nx_throw_stmt_node (X);\
  } while (0)
extern void gt_pch_nx_throw_stmt_node (void *);
#define gt_pch_n_21VEC_eh_landing_pad_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_eh_landing_pad_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_eh_landing_pad_gc (void *);
#define gt_pch_n_16VEC_eh_region_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_eh_region_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_eh_region_gc (void *);
#define gt_pch_n_10eh_catch_d(X) do { \
  if (X != NULL) gt_pch_nx_eh_catch_d (X);\
  } while (0)
extern void gt_pch_nx_eh_catch_d (void *);
#define gt_pch_n_16eh_landing_pad_d(X) do { \
  if (X != NULL) gt_pch_nx_eh_landing_pad_d (X);\
  } while (0)
extern void gt_pch_nx_eh_landing_pad_d (void *);
#define gt_pch_n_11eh_region_d(X) do { \
  if (X != NULL) gt_pch_nx_eh_region_d (X);\
  } while (0)
extern void gt_pch_nx_eh_region_d (void *);
#define gt_pch_n_10vcall_insn(X) do { \
  if (X != NULL) gt_pch_nx_vcall_insn (X);\
  } while (0)
extern void gt_pch_nx_vcall_insn (void *);
#define gt_pch_n_18VEC_vcall_entry_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_vcall_entry_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_vcall_entry_gc (void *);
#define gt_pch_n_18VEC_dcall_entry_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_dcall_entry_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_dcall_entry_gc (void *);
#define gt_pch_n_16var_loc_list_def(X) do { \
  if (X != NULL) gt_pch_nx_var_loc_list_def (X);\
  } while (0)
extern void gt_pch_nx_var_loc_list_def (void *);
#define gt_pch_n_12var_loc_node(X) do { \
  if (X != NULL) gt_pch_nx_var_loc_node (X);\
  } while (0)
extern void gt_pch_nx_var_loc_node (void *);
#define gt_pch_n_20VEC_die_arg_entry_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_die_arg_entry_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_die_arg_entry_gc (void *);
#define gt_pch_n_16limbo_die_struct(X) do { \
  if (X != NULL) gt_pch_nx_limbo_die_struct (X);\
  } while (0)
extern void gt_pch_nx_limbo_die_struct (void *);
#define gt_pch_n_20VEC_pubname_entry_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_pubname_entry_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_pubname_entry_gc (void *);
#define gt_pch_n_19VEC_dw_attr_node_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_dw_attr_node_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_dw_attr_node_gc (void *);
#define gt_pch_n_18comdat_type_struct(X) do { \
  if (X != NULL) gt_pch_nx_comdat_type_struct (X);\
  } while (0)
extern void gt_pch_nx_comdat_type_struct (void *);
#define gt_pch_n_25dw_ranges_by_label_struct(X) do { \
  if (X != NULL) gt_pch_nx_dw_ranges_by_label_struct (X);\
  } while (0)
extern void gt_pch_nx_dw_ranges_by_label_struct (void *);
#define gt_pch_n_16dw_ranges_struct(X) do { \
  if (X != NULL) gt_pch_nx_dw_ranges_struct (X);\
  } while (0)
extern void gt_pch_nx_dw_ranges_struct (void *);
#define gt_pch_n_28dw_separate_line_info_struct(X) do { \
  if (X != NULL) gt_pch_nx_dw_separate_line_info_struct (X);\
  } while (0)
extern void gt_pch_nx_dw_separate_line_info_struct (void *);
#define gt_pch_n_19dw_line_info_struct(X) do { \
  if (X != NULL) gt_pch_nx_dw_line_info_struct (X);\
  } while (0)
extern void gt_pch_nx_dw_line_info_struct (void *);
#define gt_pch_n_25VEC_deferred_locations_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_deferred_locations_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_deferred_locations_gc (void *);
#define gt_pch_n_18dw_loc_list_struct(X) do { \
  if (X != NULL) gt_pch_nx_dw_loc_list_struct (X);\
  } while (0)
extern void gt_pch_nx_dw_loc_list_struct (void *);
#define gt_pch_n_15dwarf_file_data(X) do { \
  if (X != NULL) gt_pch_nx_dwarf_file_data (X);\
  } while (0)
extern void gt_pch_nx_dwarf_file_data (void *);
#define gt_pch_n_15queued_reg_save(X) do { \
  if (X != NULL) gt_pch_nx_queued_reg_save (X);\
  } while (0)
extern void gt_pch_nx_queued_reg_save (void *);
#define gt_pch_n_20indirect_string_node(X) do { \
  if (X != NULL) gt_pch_nx_indirect_string_node (X);\
  } while (0)
extern void gt_pch_nx_indirect_string_node (void *);
#define gt_pch_n_19dw_loc_descr_struct(X) do { \
  if (X != NULL) gt_pch_nx_dw_loc_descr_struct (X);\
  } while (0)
extern void gt_pch_nx_dw_loc_descr_struct (void *);
#define gt_pch_n_13dw_fde_struct(X) do { \
  if (X != NULL) gt_pch_nx_dw_fde_struct (X);\
  } while (0)
extern void gt_pch_nx_dw_fde_struct (void *);
#define gt_pch_n_13dw_cfi_struct(X) do { \
  if (X != NULL) gt_pch_nx_dw_cfi_struct (X);\
  } while (0)
extern void gt_pch_nx_dw_cfi_struct (void *);
#define gt_pch_n_8typeinfo(X) do { \
  if (X != NULL) gt_pch_nx_typeinfo (X);\
  } while (0)
extern void gt_pch_nx_typeinfo (void *);
#define gt_pch_n_22VEC_alias_set_entry_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_alias_set_entry_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_alias_set_entry_gc (void *);
#define gt_pch_n_17alias_set_entry_d(X) do { \
  if (X != NULL) gt_pch_nx_alias_set_entry_d (X);\
  } while (0)
extern void gt_pch_nx_alias_set_entry_d (void *);
#define gt_pch_n_24constant_descriptor_tree(X) do { \
  if (X != NULL) gt_pch_nx_constant_descriptor_tree (X);\
  } while (0)
extern void gt_pch_nx_constant_descriptor_tree (void *);
#define gt_pch_n_15cgraph_asm_node(X) do { \
  if (X != NULL) gt_pch_nx_cgraph_asm_node (X);\
  } while (0)
extern void gt_pch_nx_cgraph_asm_node (void *);
#define gt_pch_n_12varpool_node(X) do { \
  if (X != NULL) gt_pch_nx_varpool_node (X);\
  } while (0)
extern void gt_pch_nx_varpool_node (void *);
#define gt_pch_n_22VEC_cgraph_node_set_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_cgraph_node_set_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_cgraph_node_set_gc (void *);
#define gt_pch_n_19cgraph_node_set_def(X) do { \
  if (X != NULL) gt_pch_nx_cgraph_node_set_def (X);\
  } while (0)
extern void gt_pch_nx_cgraph_node_set_def (void *);
#define gt_pch_n_27cgraph_node_set_element_def(X) do { \
  if (X != NULL) gt_pch_nx_cgraph_node_set_element_def (X);\
  } while (0)
extern void gt_pch_nx_cgraph_node_set_element_def (void *);
#define gt_pch_n_22VEC_cgraph_node_ptr_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_cgraph_node_ptr_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_cgraph_node_ptr_gc (void *);
#define gt_pch_n_11cgraph_edge(X) do { \
  if (X != NULL) gt_pch_nx_cgraph_edge (X);\
  } while (0)
extern void gt_pch_nx_cgraph_edge (void *);
#define gt_pch_n_24VEC_ipa_replace_map_p_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_ipa_replace_map_p_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_ipa_replace_map_p_gc (void *);
#define gt_pch_n_15ipa_replace_map(X) do { \
  if (X != NULL) gt_pch_nx_ipa_replace_map (X);\
  } while (0)
extern void gt_pch_nx_ipa_replace_map (void *);
#define gt_pch_n_11cgraph_node(X) do { \
  if (X != NULL) gt_pch_nx_cgraph_node (X);\
  } while (0)
extern void gt_pch_nx_cgraph_node (void *);
#define gt_pch_n_18VEC_basic_block_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_basic_block_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_basic_block_gc (void *);
#define gt_pch_n_14gimple_bb_info(X) do { \
  if (X != NULL) gt_pch_nx_gimple_bb_info (X);\
  } while (0)
extern void gt_pch_nx_gimple_bb_info (void *);
#define gt_pch_n_11rtl_bb_info(X) do { \
  if (X != NULL) gt_pch_nx_rtl_bb_info (X);\
  } while (0)
extern void gt_pch_nx_rtl_bb_info (void *);
#define gt_pch_n_11VEC_edge_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_edge_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_edge_gc (void *);
#define gt_pch_n_17cselib_val_struct(X) do { \
  if (X != NULL) gt_pch_nx_cselib_val_struct (X);\
  } while (0)
extern void gt_pch_nx_cselib_val_struct (void *);
#define gt_pch_n_12elt_loc_list(X) do { \
  if (X != NULL) gt_pch_nx_elt_loc_list (X);\
  } while (0)
extern void gt_pch_nx_elt_loc_list (void *);
#define gt_pch_n_13VEC_loop_p_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_loop_p_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_loop_p_gc (void *);
#define gt_pch_n_4loop(X) do { \
  if (X != NULL) gt_pch_nx_loop (X);\
  } while (0)
extern void gt_pch_nx_loop (void *);
#define gt_pch_n_9loop_exit(X) do { \
  if (X != NULL) gt_pch_nx_loop_exit (X);\
  } while (0)
extern void gt_pch_nx_loop_exit (void *);
#define gt_pch_n_13nb_iter_bound(X) do { \
  if (X != NULL) gt_pch_nx_nb_iter_bound (X);\
  } while (0)
extern void gt_pch_nx_nb_iter_bound (void *);
#define gt_pch_n_24types_used_by_vars_entry(X) do { \
  if (X != NULL) gt_pch_nx_types_used_by_vars_entry (X);\
  } while (0)
extern void gt_pch_nx_types_used_by_vars_entry (void *);
#define gt_pch_n_17language_function(X) do { \
  if (X != NULL) gt_pch_nx_language_function (X);\
  } while (0)
extern void gt_pch_nx_language_function (void *);
#define gt_pch_n_16machine_function(X) do { \
  if (X != NULL) gt_pch_nx_machine_function (X);\
  } while (0)
extern void gt_pch_nx_machine_function (void *);
#define gt_pch_n_5loops(X) do { \
  if (X != NULL) gt_pch_nx_loops (X);\
  } while (0)
extern void gt_pch_nx_loops (void *);
#define gt_pch_n_18control_flow_graph(X) do { \
  if (X != NULL) gt_pch_nx_control_flow_graph (X);\
  } while (0)
extern void gt_pch_nx_control_flow_graph (void *);
#define gt_pch_n_9eh_status(X) do { \
  if (X != NULL) gt_pch_nx_eh_status (X);\
  } while (0)
extern void gt_pch_nx_eh_status (void *);
#define gt_pch_n_20initial_value_struct(X) do { \
  if (X != NULL) gt_pch_nx_initial_value_struct (X);\
  } while (0)
extern void gt_pch_nx_initial_value_struct (void *);
#define gt_pch_n_17rtx_constant_pool(X) do { \
  if (X != NULL) gt_pch_nx_rtx_constant_pool (X);\
  } while (0)
extern void gt_pch_nx_rtx_constant_pool (void *);
#define gt_pch_n_18VEC_temp_slot_p_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_temp_slot_p_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_temp_slot_p_gc (void *);
#define gt_pch_n_9temp_slot(X) do { \
  if (X != NULL) gt_pch_nx_temp_slot (X);\
  } while (0)
extern void gt_pch_nx_temp_slot (void *);
#define gt_pch_n_9gimple_df(X) do { \
  if (X != NULL) gt_pch_nx_gimple_df (X);\
  } while (0)
extern void gt_pch_nx_gimple_df (void *);
#define gt_pch_n_23VEC_call_site_record_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_call_site_record_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_call_site_record_gc (void *);
#define gt_pch_n_18call_site_record_d(X) do { \
  if (X != NULL) gt_pch_nx_call_site_record_d (X);\
  } while (0)
extern void gt_pch_nx_call_site_record_d (void *);
#define gt_pch_n_14sequence_stack(X) do { \
  if (X != NULL) gt_pch_nx_sequence_stack (X);\
  } while (0)
extern void gt_pch_nx_sequence_stack (void *);
#define gt_pch_n_8elt_list(X) do { \
  if (X != NULL) gt_pch_nx_elt_list (X);\
  } while (0)
extern void gt_pch_nx_elt_list (void *);
#define gt_pch_n_17tree_priority_map(X) do { \
  if (X != NULL) gt_pch_nx_tree_priority_map (X);\
  } while (0)
extern void gt_pch_nx_tree_priority_map (void *);
#define gt_pch_n_12tree_int_map(X) do { \
  if (X != NULL) gt_pch_nx_tree_int_map (X);\
  } while (0)
extern void gt_pch_nx_tree_int_map (void *);
#define gt_pch_n_8tree_map(X) do { \
  if (X != NULL) gt_pch_nx_tree_map (X);\
  } while (0)
extern void gt_pch_nx_tree_map (void *);
#define gt_pch_n_14lang_tree_node(X) do { \
  if (X != NULL) gt_pch_nx_lang_tree_node (X);\
  } while (0)
extern void gt_pch_nx_lang_tree_node (void *);
#define gt_pch_n_24tree_statement_list_node(X) do { \
  if (X != NULL) gt_pch_nx_tree_statement_list_node (X);\
  } while (0)
extern void gt_pch_nx_tree_statement_list_node (void *);
#define gt_pch_n_9var_ann_d(X) do { \
  if (X != NULL) gt_pch_nx_var_ann_d (X);\
  } while (0)
extern void gt_pch_nx_var_ann_d (void *);
#define gt_pch_n_9lang_decl(X) do { \
  if (X != NULL) gt_pch_nx_lang_decl (X);\
  } while (0)
extern void gt_pch_nx_lang_decl (void *);
#define gt_pch_n_9lang_type(X) do { \
  if (X != NULL) gt_pch_nx_lang_type (X);\
  } while (0)
extern void gt_pch_nx_lang_type (void *);
#define gt_pch_n_10die_struct(X) do { \
  if (X != NULL) gt_pch_nx_die_struct (X);\
  } while (0)
extern void gt_pch_nx_die_struct (void *);
#define gt_pch_n_15varray_head_tag(X) do { \
  if (X != NULL) gt_pch_nx_varray_head_tag (X);\
  } while (0)
extern void gt_pch_nx_varray_head_tag (void *);
#define gt_pch_n_12ptr_info_def(X) do { \
  if (X != NULL) gt_pch_nx_ptr_info_def (X);\
  } while (0)
extern void gt_pch_nx_ptr_info_def (void *);
#define gt_pch_n_22VEC_constructor_elt_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_constructor_elt_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_constructor_elt_gc (void *);
#define gt_pch_n_17VEC_alias_pair_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_alias_pair_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_alias_pair_gc (void *);
#define gt_pch_n_11VEC_tree_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_tree_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_tree_gc (void *);
#define gt_pch_n_12VEC_uchar_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_uchar_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_uchar_gc (void *);
#define gt_pch_n_8function(X) do { \
  if (X != NULL) gt_pch_nx_function (X);\
  } while (0)
extern void gt_pch_nx_function (void *);
#define gt_pch_n_23constant_descriptor_rtx(X) do { \
  if (X != NULL) gt_pch_nx_constant_descriptor_rtx (X);\
  } while (0)
extern void gt_pch_nx_constant_descriptor_rtx (void *);
#define gt_pch_n_11fixed_value(X) do { \
  if (X != NULL) gt_pch_nx_fixed_value (X);\
  } while (0)
extern void gt_pch_nx_fixed_value (void *);
#define gt_pch_n_10real_value(X) do { \
  if (X != NULL) gt_pch_nx_real_value (X);\
  } while (0)
extern void gt_pch_nx_real_value (void *);
#define gt_pch_n_10VEC_rtx_gc(X) do { \
  if (X != NULL) gt_pch_nx_VEC_rtx_gc (X);\
  } while (0)
extern void gt_pch_nx_VEC_rtx_gc (void *);
#define gt_pch_n_12object_block(X) do { \
  if (X != NULL) gt_pch_nx_object_block (X);\
  } while (0)
extern void gt_pch_nx_object_block (void *);
#define gt_pch_n_9reg_attrs(X) do { \
  if (X != NULL) gt_pch_nx_reg_attrs (X);\
  } while (0)
extern void gt_pch_nx_reg_attrs (void *);
#define gt_pch_n_9mem_attrs(X) do { \
  if (X != NULL) gt_pch_nx_mem_attrs (X);\
  } while (0)
extern void gt_pch_nx_mem_attrs (void *);
#define gt_pch_n_14bitmap_obstack(X) do { \
  if (X != NULL) gt_pch_nx_bitmap_obstack (X);\
  } while (0)
extern void gt_pch_nx_bitmap_obstack (void *);
#define gt_pch_n_18bitmap_element_def(X) do { \
  if (X != NULL) gt_pch_nx_bitmap_element_def (X);\
  } while (0)
extern void gt_pch_nx_bitmap_element_def (void *);
#define gt_pch_n_15basic_block_def(X) do { \
  if (X != NULL) gt_pch_nx_basic_block_def (X);\
  } while (0)
extern void gt_pch_nx_basic_block_def (void *);
#define gt_pch_n_8edge_def(X) do { \
  if (X != NULL) gt_pch_nx_edge_def (X);\
  } while (0)
extern void gt_pch_nx_edge_def (void *);
#define gt_pch_n_17gimple_seq_node_d(X) do { \
  if (X != NULL) gt_pch_nx_gimple_seq_node_d (X);\
  } while (0)
extern void gt_pch_nx_gimple_seq_node_d (void *);
#define gt_pch_n_12gimple_seq_d(X) do { \
  if (X != NULL) gt_pch_nx_gimple_seq_d (X);\
  } while (0)
extern void gt_pch_nx_gimple_seq_d (void *);
#define gt_pch_n_7section(X) do { \
  if (X != NULL) gt_pch_nx_section (X);\
  } while (0)
extern void gt_pch_nx_section (void *);
#define gt_pch_n_18gimple_statement_d(X) do { \
  if (X != NULL) gt_pch_nx_gimple_statement_d (X);\
  } while (0)
extern void gt_pch_nx_gimple_statement_d (void *);
#define gt_pch_n_9rtvec_def(X) do { \
  if (X != NULL) gt_pch_nx_rtvec_def (X);\
  } while (0)
extern void gt_pch_nx_rtvec_def (void *);
#define gt_pch_n_7rtx_def(X) do { \
  if (X != NULL) gt_pch_nx_rtx_def (X);\
  } while (0)
extern void gt_pch_nx_rtx_def (void *);
#define gt_pch_n_15bitmap_head_def(X) do { \
  if (X != NULL) gt_pch_nx_bitmap_head_def (X);\
  } while (0)
extern void gt_pch_nx_bitmap_head_def (void *);
#define gt_pch_n_9tree_node(X) do { \
  if (X != NULL) gt_pch_nx_tree_node (X);\
  } while (0)
#define gt_pch_nx_tree_node gt_pch_nx_lang_tree_node
#define gt_pch_n_6answer(X) do { \
  if (X != NULL) gt_pch_nx_answer (X);\
  } while (0)
extern void gt_pch_nx_answer (void *);
#define gt_pch_n_9cpp_macro(X) do { \
  if (X != NULL) gt_pch_nx_cpp_macro (X);\
  } while (0)
extern void gt_pch_nx_cpp_macro (void *);
#define gt_pch_n_9cpp_token(X) do { \
  if (X != NULL) gt_pch_nx_cpp_token (X);\
  } while (0)
extern void gt_pch_nx_cpp_token (void *);
#define gt_pch_n_9line_maps(X) do { \
  if (X != NULL) gt_pch_nx_line_maps (X);\
  } while (0)
extern void gt_pch_nx_line_maps (void *);
extern void gt_pch_n_II17splay_tree_node_s (void *);
extern void gt_pch_n_SP9tree_node17splay_tree_node_s (void *);
extern void gt_pch_n_P9tree_nodeP9tree_node17splay_tree_node_s (void *);
extern void gt_pch_n_IP9tree_node17splay_tree_node_s (void *);
extern void gt_pch_n_P15interface_tuple4htab (void *);
extern void gt_pch_n_P16volatilized_type4htab (void *);
extern void gt_pch_n_P17string_descriptor4htab (void *);
extern void gt_pch_n_P14type_assertion4htab (void *);
extern void gt_pch_n_P18treetreehash_entry4htab (void *);
extern void gt_pch_n_P17module_htab_entry4htab (void *);
extern void gt_pch_n_P21pending_abstract_type4htab (void *);
extern void gt_pch_n_P10spec_entry4htab (void *);
extern void gt_pch_n_P16cxx_int_tree_map4htab (void *);
extern void gt_pch_n_P17named_label_entry4htab (void *);
extern void gt_pch_n_P12tree_int_map4htab (void *);
extern void gt_pch_n_P20lto_symtab_entry_def4htab (void *);
extern void gt_pch_n_IP9tree_node12splay_tree_s (void *);
extern void gt_pch_n_P18mips16_local_alias4htab (void *);
extern void gt_pch_n_P18mflip_mips16_entry4htab (void *);
extern void gt_pch_n_P9tree_nodeP9tree_node12splay_tree_s (void *);
extern void gt_pch_n_P12varpool_node4htab (void *);
extern void gt_pch_n_P13scev_info_str4htab (void *);
extern void gt_pch_n_P23constant_descriptor_rtx4htab (void *);
extern void gt_pch_n_P24constant_descriptor_tree4htab (void *);
extern void gt_pch_n_P12object_block4htab (void *);
extern void gt_pch_n_P7section4htab (void *);
extern void gt_pch_n_P17tree_priority_map4htab (void *);
extern void gt_pch_n_P8tree_map4htab (void *);
extern void gt_pch_n_P9type_hash4htab (void *);
extern void gt_pch_n_P13libfunc_entry4htab (void *);
extern void gt_pch_n_P23temp_slot_address_entry4htab (void *);
extern void gt_pch_n_P15throw_stmt_node4htab (void *);
extern void gt_pch_n_P9reg_attrs4htab (void *);
extern void gt_pch_n_P9mem_attrs4htab (void *);
extern void gt_pch_n_P7rtx_def4htab (void *);
extern void gt_pch_n_SP9tree_node12splay_tree_s (void *);
extern void gt_pch_n_P10vcall_insn4htab (void *);
extern void gt_pch_n_P16var_loc_list_def4htab (void *);
extern void gt_pch_n_P10die_struct4htab (void *);
extern void gt_pch_n_P15dwarf_file_data4htab (void *);
extern void gt_pch_n_P20indirect_string_node4htab (void *);
extern void gt_pch_n_P11cgraph_node4htab (void *);
extern void gt_pch_n_II12splay_tree_s (void *);
extern void gt_pch_n_P27cgraph_node_set_element_def4htab (void *);
extern void gt_pch_n_P11cgraph_edge4htab (void *);
extern void gt_pch_n_P9loop_exit4htab (void *);
extern void gt_pch_n_P24types_used_by_vars_entry4htab (void *);
extern void gt_pch_n_P9tree_node4htab (void *);

/* functions code */

/* Local pointer-walking routines.  */
extern void gt_pch_p_15interface_tuple
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_16volatilized_type
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_17string_descriptor
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_15c_inline_static
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_24VEC_c_goto_bindings_p_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_15c_goto_bindings
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_7c_scope
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9c_binding
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_12c_label_vars
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_8c_parser
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9imp_entry
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_16hashed_attribute
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_12hashed_entry
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_14type_assertion
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18treetreehash_entry
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_5CPool
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_3JCF
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_17module_htab_entry
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_13binding_level
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9opt_stack
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_11align_stack
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18VEC_tree_gc_vec_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_19VEC_const_char_p_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_21pending_abstract_type
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_15VEC_tree_int_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9cp_parser
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_17cp_parser_context
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_8cp_lexer
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_10tree_check
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_22VEC_deferred_access_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_10spec_entry
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_16pending_template
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_21named_label_use_entry
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_28VEC_deferred_access_check_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18sorted_fields_type
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18VEC_tree_pair_s_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_17named_label_entry
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_32VEC_qualified_typedef_usage_t_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_14cp_token_cache
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_11saved_scope
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_16cxx_int_tree_map
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_23VEC_cp_class_binding_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_24VEC_cxx_saved_binding_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_16cp_binding_level
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_11cxx_binding
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_15binding_entry_s
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_15binding_table_s
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_11tinst_level
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_14VEC_tinfo_s_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18gnat_binding_level
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9elab_info
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_10stmt_group
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_16VEC_parm_attr_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_11parm_attr_d
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_22VEC_ipa_edge_args_t_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_20lto_symtab_entry_def
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18mips16_local_alias
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18mflip_mips16_entry
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_20ssa_operand_memory_d
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_13scev_info_str
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_24VEC_mem_addr_template_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_13VEC_gimple_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9type_hash
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_16string_pool_data
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_13libfunc_entry
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_23temp_slot_address_entry
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_15throw_stmt_node
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_21VEC_eh_landing_pad_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_16VEC_eh_region_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_10eh_catch_d
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_16eh_landing_pad_d
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_11eh_region_d
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_10vcall_insn
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18VEC_vcall_entry_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18VEC_dcall_entry_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_16var_loc_list_def
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_12var_loc_node
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_20VEC_die_arg_entry_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_16limbo_die_struct
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_20VEC_pubname_entry_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_19VEC_dw_attr_node_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18comdat_type_struct
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_25dw_ranges_by_label_struct
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_16dw_ranges_struct
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_28dw_separate_line_info_struct
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_19dw_line_info_struct
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_25VEC_deferred_locations_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18dw_loc_list_struct
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_15dwarf_file_data
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_15queued_reg_save
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_20indirect_string_node
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_19dw_loc_descr_struct
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_13dw_fde_struct
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_13dw_cfi_struct
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_8typeinfo
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_22VEC_alias_set_entry_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_17alias_set_entry_d
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_24constant_descriptor_tree
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_15cgraph_asm_node
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_12varpool_node
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_22VEC_cgraph_node_set_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_19cgraph_node_set_def
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_27cgraph_node_set_element_def
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_22VEC_cgraph_node_ptr_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_11cgraph_edge
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_24VEC_ipa_replace_map_p_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_15ipa_replace_map
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_11cgraph_node
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18VEC_basic_block_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_14gimple_bb_info
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_11rtl_bb_info
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_11VEC_edge_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_17cselib_val_struct
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_12elt_loc_list
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_13VEC_loop_p_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_4loop
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9loop_exit
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_13nb_iter_bound
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_24types_used_by_vars_entry
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_17language_function
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_16machine_function
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_5loops
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18control_flow_graph
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9eh_status
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_20initial_value_struct
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_17rtx_constant_pool
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18VEC_temp_slot_p_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9temp_slot
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9gimple_df
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_23VEC_call_site_record_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18call_site_record_d
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_14sequence_stack
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_8elt_list
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_17tree_priority_map
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_12tree_int_map
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_8tree_map
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_14lang_tree_node
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_24tree_statement_list_node
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9var_ann_d
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9lang_decl
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9lang_type
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_10die_struct
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_15varray_head_tag
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_12ptr_info_def
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_22VEC_constructor_elt_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_17VEC_alias_pair_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_11VEC_tree_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_12VEC_uchar_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_8function
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_23constant_descriptor_rtx
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_11fixed_value
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_10real_value
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_10VEC_rtx_gc
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_12object_block
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9reg_attrs
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9mem_attrs
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_14bitmap_obstack
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18bitmap_element_def
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_15basic_block_def
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_8edge_def
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_17gimple_seq_node_d
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_12gimple_seq_d
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_7section
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_18gimple_statement_d
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9rtvec_def
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_7rtx_def
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_15bitmap_head_def
    (void *, void *, gt_pointer_operator, void *);
#define gt_pch_p_9tree_node gt_pch_p_14lang_tree_node
extern void gt_pch_p_6answer
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9cpp_macro
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9cpp_token
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_9line_maps
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_II17splay_tree_node_s
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_SP9tree_node17splay_tree_node_s
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P9tree_nodeP9tree_node17splay_tree_node_s
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_IP9tree_node17splay_tree_node_s
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P15interface_tuple4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P16volatilized_type4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P17string_descriptor4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P14type_assertion4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P18treetreehash_entry4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P17module_htab_entry4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P21pending_abstract_type4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P10spec_entry4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P16cxx_int_tree_map4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P17named_label_entry4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P12tree_int_map4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P20lto_symtab_entry_def4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_IP9tree_node12splay_tree_s
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P18mips16_local_alias4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P18mflip_mips16_entry4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P9tree_nodeP9tree_node12splay_tree_s
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P12varpool_node4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P13scev_info_str4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P23constant_descriptor_rtx4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P24constant_descriptor_tree4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P12object_block4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P7section4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P17tree_priority_map4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P8tree_map4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P9type_hash4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P13libfunc_entry4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P23temp_slot_address_entry4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P15throw_stmt_node4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P9reg_attrs4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P9mem_attrs4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P7rtx_def4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_SP9tree_node12splay_tree_s
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P10vcall_insn4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P16var_loc_list_def4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P10die_struct4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P15dwarf_file_data4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P20indirect_string_node4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P11cgraph_node4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_II12splay_tree_s
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P27cgraph_node_set_element_def4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P11cgraph_edge4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P9loop_exit4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P24types_used_by_vars_entry4htab
    (void *, void *, gt_pointer_operator, void *);
extern void gt_pch_p_P9tree_node4htab
    (void *, void *, gt_pointer_operator, void *);
