]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
langhooks.c (lang_hook_default_clear_binding_stack): New.
authorZack Weinberg <zack@gcc.gnu.org>
Thu, 25 Oct 2001 17:57:03 +0000 (17:57 +0000)
committerZack Weinberg <zack@gcc.gnu.org>
Thu, 25 Oct 2001 17:57:03 +0000 (17:57 +0000)
* 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

gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/cp-lang.c
gcc/langhooks.c
gcc/langhooks.h
gcc/toplev.c
gcc/toplev.h

index 44d633a1a03333e3360274a05b09154670cd37ab..63933977d7f200e76b8494d0fc03985541b1c8ef 100644 (file)
@@ -1,3 +1,15 @@
+2001-10-25  Zack Weinberg  <zack@codesourcery.com>
+
+       * 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  <nickc@cambridge.redhat.com>
 
        * config/mips/isa3264.h (SUBTARGET_CPP_SIZE_SPEC): Replace
@@ -37,7 +49,7 @@ Wed Oct 24 18:43:42 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
        * dwarf2out.c (file_info_cmp): Always return consistent results.
 
 2001-10-24  Roger Sayle <roger@eyesopen.com>
+
        * stmt.c (expand_end_case): Index jumptables from zero for
        suitably small values of minval.
 
index a8f7c2fdafb53c1173045890ab28ab7a75b30dae..5fbcc47e2f8ec0e527e9dfd2502ce480ff077701 100644 (file)
@@ -1,3 +1,8 @@
+2001-10-25  Zack Weinberg  <zack@codesourcery.com>
+
+       * cp-lang.c: Redefine LANG_HOOKS_CLEAR_BINDING_STACK to
+       pop_everything.
+
 Tue Oct 23 14:00:20 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
        * cp-lang.c (cxx_get_alias_set): New function.
@@ -108,7 +113,7 @@ Tue Oct 23 14:00:20 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
 2001-10-10  Richard Henderson  <rth@redhat.com>
 
-        * 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  <kenner@vlsi1.ultra.nyu.edu>
 
        * 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.
index ca9f88fb8cb0ea3afb3d796e348f41e6cefee035..4ff47af990a18bd63913322aacf1940255d5eb5f 100644 (file)
@@ -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
index b912e711bfcd66d65de21a110bd7676e729deb01..40a041fceceb9f0279b44693c505aacb1c08f818 100644 (file)
@@ -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.  */
 
index 69ff1d819bf626a90fb5968ea93b42b12d0f5155..d844cdb94141364197da81e5b046b639567364f0 100644 (file)
@@ -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, \
index 1320013cb476407a23207034bc0490b4c7757de6..818da6fc47ba896c48339971599abfd5953d1e19 100644 (file)
@@ -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.  */
index 93b30f44578994d2b05d22764b1e5e20f4648c70..8f21b031baf97134021ad0e53876ef6fd69d5261 100644 (file)
@@ -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));