-extern void init_cp_semantics PARAMS ((void));
-extern tree finish_expr_stmt PARAMS ((tree));
-extern tree begin_if_stmt PARAMS ((void));
-extern void finish_if_stmt_cond PARAMS ((tree, tree));
-extern tree finish_then_clause PARAMS ((tree));
-extern void begin_else_clause PARAMS ((void));
-extern void finish_else_clause PARAMS ((tree));
-extern void finish_if_stmt PARAMS ((void));
-extern tree begin_while_stmt PARAMS ((void));
-extern void finish_while_stmt_cond PARAMS ((tree, tree));
-extern void finish_while_stmt PARAMS ((tree));
-extern tree begin_do_stmt PARAMS ((void));
-extern void finish_do_body PARAMS ((tree));
-extern void finish_do_stmt PARAMS ((tree, tree));
-extern tree finish_return_stmt PARAMS ((tree));
-extern tree begin_for_stmt PARAMS ((void));
-extern void finish_for_init_stmt PARAMS ((tree));
-extern void finish_for_cond PARAMS ((tree, tree));
-extern void finish_for_expr PARAMS ((tree, tree));
-extern void finish_for_stmt PARAMS ((tree));
-extern tree finish_break_stmt PARAMS ((void));
-extern tree finish_continue_stmt PARAMS ((void));
-extern tree begin_switch_stmt PARAMS ((void));
-extern void finish_switch_cond PARAMS ((tree, tree));
-extern void finish_switch_stmt PARAMS ((tree));
-extern tree finish_case_label PARAMS ((tree, tree));
-extern tree finish_goto_stmt PARAMS ((tree));
-extern tree begin_try_block PARAMS ((void));
-extern void finish_try_block PARAMS ((tree));
-extern tree begin_eh_spec_block PARAMS ((void));
-extern void finish_eh_spec_block PARAMS ((tree, tree));
-extern void finish_handler_sequence PARAMS ((tree));
-extern tree begin_function_try_block PARAMS ((void));
-extern void finish_function_try_block PARAMS ((tree));
-extern void finish_function_handler_sequence PARAMS ((tree));
-extern void finish_cleanup_try_block PARAMS ((tree));
-extern tree begin_handler PARAMS ((void));
-extern void finish_handler_parms PARAMS ((tree, tree));
-extern void begin_catch_block PARAMS ((tree));
-extern void finish_handler PARAMS ((tree));
-extern void finish_cleanup PARAMS ((tree, tree));
-extern tree begin_compound_stmt PARAMS ((int));
-extern tree finish_compound_stmt PARAMS ((int, tree));
-extern tree finish_asm_stmt PARAMS ((tree, tree, tree, tree, tree));
-extern void finish_label_stmt PARAMS ((tree));
-extern void finish_label_decl PARAMS ((tree));
-extern void finish_subobject PARAMS ((tree));
-extern tree finish_parenthesized_expr PARAMS ((tree));
-extern tree begin_stmt_expr PARAMS ((void));
-extern tree finish_stmt_expr PARAMS ((tree));
-extern tree finish_call_expr PARAMS ((tree, tree, int));
-extern tree finish_increment_expr PARAMS ((tree, enum tree_code));
-extern tree finish_this_expr PARAMS ((void));
-extern tree finish_object_call_expr PARAMS ((tree, tree, tree));
-extern tree finish_qualified_object_call_expr PARAMS ((tree, tree, tree));
-extern tree finish_pseudo_destructor_call_expr PARAMS ((tree, tree, tree));
-extern tree finish_qualified_call_expr PARAMS ((tree, tree));
-extern tree finish_unary_op_expr PARAMS ((enum tree_code, tree));
-extern tree finish_id_expr PARAMS ((tree));
-extern void save_type_access_control PARAMS ((tree));
-extern void reset_type_access_control PARAMS ((void));
-extern void decl_type_access_control PARAMS ((tree));
-extern int begin_function_definition PARAMS ((tree, tree));
-extern tree begin_constructor_declarator PARAMS ((tree, tree));
-extern tree finish_declarator PARAMS ((tree, tree, tree, tree, int));
-extern void finish_translation_unit PARAMS ((void));
-extern tree finish_template_type_parm PARAMS ((tree, tree));
-extern tree finish_template_template_parm PARAMS ((tree, tree));
-extern tree finish_parmlist PARAMS ((tree, int));
-extern tree begin_class_definition PARAMS ((tree));
-extern tree finish_class_definition PARAMS ((tree, tree, int, int));
-extern void finish_default_args PARAMS ((void));
-extern void begin_inline_definitions PARAMS ((void));
-extern void finish_inline_definitions PARAMS ((void));
-extern tree finish_member_class_template PARAMS ((tree));
-extern void finish_template_decl PARAMS ((tree));
-extern tree finish_template_type PARAMS ((tree, tree, int));
-extern void enter_scope_of PARAMS ((tree));
-extern tree finish_base_specifier PARAMS ((tree, tree));
-extern void finish_member_declaration PARAMS ((tree));
-extern void check_multiple_declarators PARAMS ((void));
-extern tree finish_typeof PARAMS ((tree));
-extern tree finish_sizeof PARAMS ((tree));
-extern tree finish_alignof PARAMS ((tree));
-extern void finish_decl_cleanup PARAMS ((tree, tree));
-extern void finish_named_return_value PARAMS ((tree, tree));
-extern void expand_body PARAMS ((tree));
-extern tree nullify_returns_r PARAMS ((tree *, int *, void *));
-extern void do_pushlevel PARAMS ((void));
-extern tree do_poplevel PARAMS ((void));
-extern void finish_mem_initializers PARAMS ((tree));
-extern void setup_vtbl_ptr PARAMS ((tree, tree));
-extern void clear_out_block PARAMS ((void));
-extern tree begin_global_stmt_expr PARAMS ((void));
-extern tree finish_global_stmt_expr PARAMS ((tree));
-
-
-/* in spew.c */
-extern void init_spew PARAMS ((void));
-extern void mark_pending_inlines PARAMS ((PTR));
-extern int peekyylex PARAMS ((void));
-extern tree arbitrate_lookup PARAMS ((tree, tree, tree));
-extern tree frob_opname PARAMS ((tree));
-extern void maybe_snarf_defarg PARAMS ((void));
-extern void add_defarg_fn PARAMS ((tree));
-extern void do_pending_defargs PARAMS ((void));
-extern void done_pending_defargs PARAMS ((void));
-extern void unprocessed_defarg_fn PARAMS ((tree));
-extern void replace_defarg PARAMS ((tree, tree));
-extern void end_input PARAMS ((void));
+extern void push_deferring_access_checks (deferring_kind);
+extern void resume_deferring_access_checks (void);
+extern void stop_deferring_access_checks (void);
+extern void pop_deferring_access_checks (void);
+extern VEC (deferred_access_check,gc)* get_deferred_access_checks (void);
+extern void pop_to_parent_deferring_access_checks (void);
+extern void perform_access_checks (VEC (deferred_access_check,gc)*);
+extern void perform_deferred_access_checks (void);
+extern void perform_or_defer_access_check (tree, tree, tree);
+extern int stmts_are_full_exprs_p (void);
+extern void init_cp_semantics (void);
+extern tree do_poplevel (tree);
+extern void add_decl_expr (tree);
+extern tree finish_expr_stmt (tree);
+extern tree begin_if_stmt (void);
+extern void finish_if_stmt_cond (tree, tree);
+extern tree finish_then_clause (tree);
+extern void begin_else_clause (tree);
+extern void finish_else_clause (tree);
+extern void finish_if_stmt (tree);
+extern tree begin_while_stmt (void);
+extern void finish_while_stmt_cond (tree, tree);
+extern void finish_while_stmt (tree);
+extern tree begin_do_stmt (void);
+extern void finish_do_body (tree);
+extern void finish_do_stmt (tree, tree);
+extern tree finish_return_stmt (tree);
+extern tree begin_for_stmt (void);
+extern void finish_for_init_stmt (tree);
+extern void finish_for_cond (tree, tree);
+extern void finish_for_expr (tree, tree);
+extern void finish_for_stmt (tree);
+extern tree finish_break_stmt (void);
+extern tree finish_continue_stmt (void);
+extern tree begin_switch_stmt (void);
+extern void finish_switch_cond (tree, tree);
+extern void finish_switch_stmt (tree);
+extern tree finish_case_label (tree, tree);
+extern tree finish_goto_stmt (tree);
+extern tree begin_try_block (void);
+extern void finish_try_block (tree);
+extern tree begin_eh_spec_block (void);
+extern void finish_eh_spec_block (tree, tree);
+extern void finish_handler_sequence (tree);
+extern tree begin_function_try_block (tree *);
+extern void finish_function_try_block (tree);
+extern void finish_function_handler_sequence (tree, tree);
+extern void finish_cleanup_try_block (tree);
+extern tree begin_handler (void);
+extern void finish_handler_parms (tree, tree);
+extern void finish_handler (tree);
+extern void finish_cleanup (tree, tree);
+
+enum {
+ BCS_NO_SCOPE = 1,
+ BCS_TRY_BLOCK = 2,
+ BCS_FN_BODY = 4
+};
+extern tree begin_compound_stmt (unsigned int);
+
+extern void finish_compound_stmt (tree);
+extern tree finish_asm_stmt (int, tree, tree, tree, tree);
+extern tree finish_label_stmt (tree);
+extern void finish_label_decl (tree);
+extern tree finish_parenthesized_expr (tree);
+extern tree finish_non_static_data_member (tree, tree, tree);
+extern tree begin_stmt_expr (void);
+extern tree finish_stmt_expr_expr (tree, tree);
+extern tree finish_stmt_expr (tree, bool);
+extern tree stmt_expr_value_expr (tree);
+extern tree perform_koenig_lookup (tree, tree);
+extern tree finish_call_expr (tree, tree, bool, bool,
+ tsubst_flags_t);
+extern tree finish_increment_expr (tree, enum tree_code);
+extern tree finish_this_expr (void);
+extern tree finish_pseudo_destructor_expr (tree, tree, tree);
+extern tree finish_unary_op_expr (enum tree_code, tree);
+extern tree finish_compound_literal (tree, tree);
+extern tree finish_fname (tree);
+extern void finish_translation_unit (void);
+extern tree finish_template_type_parm (tree, tree);
+extern tree finish_template_template_parm (tree, tree);
+extern tree begin_class_definition (tree, tree);
+extern void finish_template_decl (tree);
+extern tree finish_template_type (tree, tree, int);
+extern tree finish_base_specifier (tree, tree, bool);
+extern void finish_member_declaration (tree);
+extern void qualified_name_lookup_error (tree, tree, tree,
+ location_t);
+extern void check_template_keyword (tree);
+extern tree finish_id_expression (tree, tree, tree,
+ cp_id_kind *,
+ bool, bool, bool *,
+ bool, bool, bool, bool,
+ const char **,
+ location_t);
+extern tree finish_typeof (tree);
+extern tree finish_offsetof (tree);
+extern void finish_decl_cleanup (tree, tree);
+extern void finish_eh_cleanup (tree);
+extern void emit_associated_thunks (tree);
+extern void finish_mem_initializers (tree);
+extern tree check_template_template_default_arg (tree);
+extern void expand_or_defer_fn (tree);
+extern void check_accessibility_of_qualified_id (tree, tree, tree);
+extern tree finish_qualified_id_expr (tree, tree, bool, bool,
+ bool, bool);
+extern void simplify_aggr_init_expr (tree *);
+extern void finalize_nrv (tree *, tree, tree);
+extern void note_decl_for_pch (tree);
+extern tree finish_omp_clauses (tree);
+extern void finish_omp_threadprivate (tree);
+extern tree begin_omp_structured_block (void);
+extern tree finish_omp_structured_block (tree);
+extern tree begin_omp_parallel (void);
+extern tree finish_omp_parallel (tree, tree);
+extern tree begin_omp_task (void);
+extern tree finish_omp_task (tree, tree);
+extern tree finish_omp_for (location_t, tree, tree,
+ tree, tree, tree, tree, tree);
+extern void finish_omp_atomic (enum tree_code, tree, tree);
+extern void finish_omp_barrier (void);
+extern void finish_omp_flush (void);
+extern void finish_omp_taskwait (void);
+extern enum omp_clause_default_kind cxx_omp_predetermined_sharing (tree);
+extern tree cxx_omp_clause_default_ctor (tree, tree, tree);
+extern tree cxx_omp_clause_copy_ctor (tree, tree, tree);
+extern tree cxx_omp_clause_assign_op (tree, tree, tree);
+extern tree cxx_omp_clause_dtor (tree, tree);
+extern void cxx_omp_finish_clause (tree);
+extern bool cxx_omp_privatize_by_reference (const_tree);
+extern bool cxx_omp_create_clause_info (tree, tree, bool, bool, bool);
+extern tree baselink_for_fns (tree);
+extern void finish_static_assert (tree, tree, location_t,
+ bool);
+extern tree describable_type (tree);
+extern tree finish_decltype_type (tree, bool);
+extern tree finish_trait_expr (enum cp_trait_kind, tree, tree);