From: Zack Weinberg Date: Thu, 25 Oct 2001 17:57:03 +0000 (+0000) Subject: langhooks.c (lang_hook_default_clear_binding_stack): New. X-Git-Tag: prereleases/libstdc++-3.0.95~1408 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=37207ee73dce7e537637606d3b4e7fc9852522d3;p=thirdparty%2Fgcc.git langhooks.c (lang_hook_default_clear_binding_stack): New. * langhooks.c (lang_hook_default_clear_binding_stack): New. (lang_hook_default_get_alias_set): Move next to other alias hooks. * langhooks.h: Prototype lang_hook_default_clear_binding_stack. (LANG_HOOKS_CLEAR_BINDING_STACK): New macro. (LANG_HOOKS_INITIALIZER): Add it. * toplev.h (struct lang_hooks): Add clear_binding_stack. * toplev.c (compile_file): Call lang_hooks.clear_binding_stack instead of a loop calling poplevel. cp: * cp-lang.c: Redefine LANG_HOOKS_CLEAR_BINDING_STACK to pop_everything. From-SVN: r46492 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 44d633a1a033..63933977d7f2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2001-10-25 Zack Weinberg + + * langhooks.c (lang_hook_default_clear_binding_stack): New. + (lang_hook_default_get_alias_set): Move next to other alias + hooks. + * langhooks.h: Prototype lang_hook_default_clear_binding_stack. + (LANG_HOOKS_CLEAR_BINDING_STACK): New macro. + (LANG_HOOKS_INITIALIZER): Add it. + * toplev.h (struct lang_hooks): Add clear_binding_stack. + * toplev.c (compile_file): Call lang_hooks.clear_binding_stack + instead of a loop calling poplevel. + 2001-10-25 Nick Clifton * config/mips/isa3264.h (SUBTARGET_CPP_SIZE_SPEC): Replace @@ -37,7 +49,7 @@ Wed Oct 24 18:43:42 2001 Richard Kenner * dwarf2out.c (file_info_cmp): Always return consistent results. 2001-10-24 Roger Sayle - + * stmt.c (expand_end_case): Index jumptables from zero for suitably small values of minval. diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a8f7c2fdafb5..5fbcc47e2f8e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2001-10-25 Zack Weinberg + + * cp-lang.c: Redefine LANG_HOOKS_CLEAR_BINDING_STACK to + pop_everything. + Tue Oct 23 14:00:20 2001 Richard Kenner * cp-lang.c (cxx_get_alias_set): New function. @@ -108,7 +113,7 @@ Tue Oct 23 14:00:20 2001 Richard Kenner 2001-10-10 Richard Henderson - * parse.y (asm_operand): Allow named operands. + * parse.y (asm_operand): Allow named operands. * semantics.c (finish_asm_stmt): Tweek for changed location of the operand constrant. @@ -144,7 +149,7 @@ Tue Oct 23 14:00:20 2001 Richard Kenner * class.c (build_vtable_entry_ref): Const-ify. * decl.c (predefined_identifier, - initialize_predefined_identifiers): Likewise. + initialize_predefined_identifiers): Likewise. * init.c (build_new_1): Likewise. * lex.c (cplus_tree_code_type, cplus_tree_code_length, resword): Likewise. diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c index ca9f88fb8cb0..4ff47af990a1 100644 --- a/gcc/cp/cp-lang.c +++ b/gcc/cp/cp-lang.c @@ -32,6 +32,8 @@ static HOST_WIDE_INT cxx_get_alias_set PARAMS ((tree)); #define LANG_HOOKS_INIT cxx_init #undef LANG_HOOKS_FINISH #define LANG_HOOKS_FINISH cxx_finish +#undef LANG_HOOKS_CLEAR_BINDING_STACK +#define LANG_HOOKS_CLEAR_BINDING_STACK pop_everything #undef LANG_HOOKS_INIT_OPTIONS #define LANG_HOOKS_INIT_OPTIONS cxx_init_options #undef LANG_HOOKS_DECODE_OPTION diff --git a/gcc/langhooks.c b/gcc/langhooks.c index b912e711bfcd..40a041fceceb 100644 --- a/gcc/langhooks.c +++ b/gcc/langhooks.c @@ -36,16 +36,6 @@ lang_hook_default_do_nothing () { } -/* Provide a default routine for alias sets that always returns -1. This - is used by languages that don't need to do anything special. */ - -HOST_WIDE_INT -lang_hook_default_get_alias_set (t) - tree t ATTRIBUTE_UNUSED; -{ - return -1; -} - /* Do nothing; the default hook to decode an option. */ int @@ -56,6 +46,25 @@ lang_hook_default_decode_option (argc, argv) return 0; } +/* Provide a default routine to clear the binding stack. This is used + by languages that don't need to do anything special. */ +void +lang_hook_default_clear_binding_stack () +{ + while (! global_bindings_p ()) + poplevel (0, 0, 0); +} + +/* Provide a default routine for alias sets that always returns -1. This + is used by languages that don't need to do anything special. */ + +HOST_WIDE_INT +lang_hook_default_get_alias_set (t) + tree t ATTRIBUTE_UNUSED; +{ + return -1; +} + /* Provide a hook routine for alias sets that always returns 0. This is used by languages that haven't deal with alias sets yet. */ diff --git a/gcc/langhooks.h b/gcc/langhooks.h index 69ff1d819bf6..d844cdb94141 100644 --- a/gcc/langhooks.h +++ b/gcc/langhooks.h @@ -38,9 +38,11 @@ extern HOST_WIDE_INT hook_get_alias_set_0 PARAMS ((tree)); extern void lang_hook_default_do_nothing PARAMS ((void)); extern int lang_hook_default_decode_option PARAMS ((int, char **)); extern HOST_WIDE_INT lang_hook_default_get_alias_set PARAMS ((tree)); +extern void lang_hook_default_clear_binding_stack PARAMS ((void)); #define LANG_HOOKS_INIT lang_hook_default_do_nothing #define LANG_HOOKS_FINISH lang_hook_default_do_nothing +#define LANG_HOOKS_CLEAR_BINDING_STACK lang_hook_default_clear_binding_stack #define LANG_HOOKS_INIT_OPTIONS lang_hook_default_do_nothing #define LANG_HOOKS_DECODE_OPTION lang_hook_default_decode_option #define LANG_HOOKS_POST_OPTIONS lang_hook_default_do_nothing @@ -99,6 +101,7 @@ int tree_inlining_default_hook_anon_aggr_type_p PARAMS ((tree)); #define LANG_HOOKS_INITIALIZER { \ LANG_HOOKS_INIT, \ LANG_HOOKS_FINISH, \ + LANG_HOOKS_CLEAR_BINDING_STACK, \ LANG_HOOKS_INIT_OPTIONS, \ LANG_HOOKS_DECODE_OPTION, \ LANG_HOOKS_POST_OPTIONS, \ diff --git a/gcc/toplev.c b/gcc/toplev.c index 1320013cb476..818da6fc47ba 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -2334,8 +2334,7 @@ compile_file (name) /* In case there were missing block closers, get us back to the global binding level. */ - while (! global_bindings_p ()) - poplevel (0, 0, 0); + (*lang_hooks.clear_binding_stack) (); /* Compilation is now finished except for writing what's left of the symbol table output. */ diff --git a/gcc/toplev.h b/gcc/toplev.h index 93b30f445789..8f21b031baf9 100644 --- a/gcc/toplev.h +++ b/gcc/toplev.h @@ -149,6 +149,9 @@ struct lang_hooks /* Called last, as a finalizer. */ void (*finish) PARAMS ((void)); + /* Called immediately after parsing to clear the binding stack. */ + void (*clear_binding_stack) PARAMS ((void)); + /* Called to initialize options, before any calls to decode_option. */ void (*init_options) PARAMS ((void));