c-tree.h (pushdecl): Declare.
authorNathan Sidwell <nathan@acm.org>
Tue, 9 May 2017 11:17:45 +0000 (11:17 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Tue, 9 May 2017 11:17:45 +0000 (11:17 +0000)
gcc/c/
* c-tree.h (pushdecl): Declare.
gcc/cp/
* cp-lang.c (get_global_decls, cxx_pushdecl): New.
(LANG_HOOKS_GETDECLS, LANG_HOOKS_PUSHDECL): Override.
* name-lookup.h (pushdecl_top_level): Declare.
gcc/c-family/
* c-common.c (c_register_builtin_type): Use pushdecl lang_hook.
* c-common.h (pushdecl_top_level, pushdecl): Don't declare here.
gcc/objc/
* objc-gnu-runtime-abi-01.c (objc_add_static_instance): Use
pushdecl lang_hook.

From-SVN: r247785

gcc/c-family/ChangeLog
gcc/c-family/c-common.c
gcc/c-family/c-common.h
gcc/c/ChangeLog
gcc/c/c-tree.h
gcc/cp/ChangeLog
gcc/cp/cp-lang.c
gcc/cp/name-lookup.h
gcc/objc/ChangeLog
gcc/objc/objc-gnu-runtime-abi-01.c

index 7e882e1cf2455cc9a82de826bedf7165be6c3df7..6409442060b530bd86ba5efd90bdb2c216edeea3 100644 (file)
@@ -1,3 +1,8 @@
+2017-05-09  Nathan Sidwell  <nathan@acm.org>
+
+       * c-common.c (c_register_builtin_type): Use pushdecl lang_hook.
+       * c-common.h (pushdecl_top_level, pushdecl): Don't declare here.
+
 2017-05-08  Martin Sebor  <msebor@redhat.com>
 
        PR translation/80280
index f46b2547644fadef437874c8dbf06806a46014e8..ad686d2d6bab2960d57f002eaf3af689c8908a3b 100644 (file)
@@ -2589,7 +2589,7 @@ c_register_builtin_type (tree type, const char* name)
   DECL_ARTIFICIAL (decl) = 1;
   if (!TYPE_NAME (type))
     TYPE_NAME (type) = decl;
-  pushdecl (decl);
+  lang_hooks.decls.pushdecl (decl);
 
   registered_builtin_types = tree_cons (0, type, registered_builtin_types);
 }
index 138a0a675ac82d737b9eb8f14cc2f51c351af0b1..9e3982d1ce8feafb230c4c23b381e8bd940e710c 100644 (file)
@@ -588,8 +588,7 @@ extern tree push_stmt_list (void);
 extern tree pop_stmt_list (tree);
 extern tree add_stmt (tree);
 extern void push_cleanup (tree, tree, bool);
-extern tree pushdecl_top_level (tree);
-extern tree pushdecl (tree);
+
 extern tree build_modify_expr (location_t, tree, tree, enum tree_code,
                               location_t, tree, tree);
 extern tree build_array_notation_expr (location_t, tree, tree, enum tree_code,
index 45f375fdfa5c93d9b9ff24deb0eb6fba790757fa..5d6c6ef2ff2c375eeecb1cef2db262b8ddd2ffdd 100644 (file)
@@ -1,3 +1,7 @@
+2017-05-09  Nathan Sidwell  <nathan@acm.org>
+
+       * c-tree.h (pushdecl): Declare.
+
 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
 
        * c-decl.c (warn_defaults_to): Replace report_diagnostic
index 5fa32a48f294e0a465f764ba1f30393240464115..8d232a4b84c9ec87d16bf644f3b083f5d6d8112c 100644 (file)
@@ -506,6 +506,7 @@ extern tree c_break_label;
 extern tree c_cont_label;
 
 extern bool global_bindings_p (void);
+extern tree pushdecl (tree);
 extern void push_scope (void);
 extern tree pop_scope (void);
 extern void c_bindings_start_stmt_expr (struct c_spot_bindings *);
index 3119d5fb2b2c09fe93e2d330939663db34c89afc..c4b850f5186002cab8073c6688fdc5e1ae100b40 100644 (file)
@@ -1,3 +1,9 @@
+2017-05-09  Nathan Sidwell  <nathan@acm.org>
+
+       * cp-lang.c (get_global_decls, cxx_pushdecl): New.
+       (LANG_HOOKS_GETDECLS, LANG_HOOKS_PUSHDECL): Override.
+       * name-lookup.h (pushdecl_top_level): Declare.
+
 2017-05-08  Jason Merrill  <jason@redhat.com>
 
        PR c++/80178 - parameter passing for uncopyable classes
@@ -10,7 +16,7 @@
 
 2017-05-08  Nathan Sidwell  <nathan@acm.org>
 
-       * decl.c (builtin_function_1): Set DCL_ANTICIPATED before pushing.
+       * decl.c (builtin_function_1): Set DECL_ANTICIPATED before pushing.
        (start_preparsed_function): Do decl pushing before setting
        current_funciton_decl and announcing it.
 
index d4776a2986f227d52a4d9decfcf2069eedf0e4af..b5f11e390fbe6915cffc6469427f4e2738b9fa31 100644 (file)
@@ -35,6 +35,8 @@ static tree cp_eh_personality (void);
 static tree get_template_innermost_arguments_folded (const_tree);
 static tree get_template_argument_pack_elems_folded (const_tree);
 static tree cxx_enum_underlying_base_type (const_tree);
+static tree get_global_decls ();
+static tree cxx_pushdecl (tree);
 
 /* Lang hooks common to C++ and ObjC++ are declared in cp/cp-objcp-common.h;
    consequently, there should be very few hooks below.  */
@@ -78,6 +80,10 @@ static tree cxx_enum_underlying_base_type (const_tree);
 #define LANG_HOOKS_EH_RUNTIME_TYPE build_eh_type_type
 #undef LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE
 #define LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE cxx_enum_underlying_base_type
+#undef LANG_HOOKS_GETDECLS
+#define LANG_HOOKS_GETDECLS get_global_decls
+#undef LANG_HOOKS_PUSHDECL
+#define LANG_HOOKS_PUSHDECL cxx_pushdecl
 
 /* Each front end provides its own lang hook initializer.  */
 struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
@@ -229,5 +235,21 @@ tree cxx_enum_underlying_base_type (const_tree type)
   return underlying_type;
 }
 
+/* Return the list of decls in the global namespace.  */
+
+static tree
+get_global_decls ()
+{
+  return NAMESPACE_LEVEL (global_namespace)->names;
+}
+
+/* Push DECL into the current scope.  */
+
+static tree
+cxx_pushdecl (tree decl)
+{
+  return pushdecl (decl);
+}
+
 #include "gt-cp-cp-lang.h"
 #include "gtype-cp.h"
index 904b14ea53753be67bb9cae20e035e417967cbfc..02e37d7f5af280666852137434a8983832f014c1 100644 (file)
@@ -342,4 +342,6 @@ extern tree innermost_non_namespace_value (tree);
 extern cxx_binding *outer_binding (tree, cxx_binding *, bool);
 extern void cp_emit_debug_info_for_using (tree, tree);
 
+extern tree pushdecl_top_level                 (tree);
+
 #endif /* GCC_CP_NAME_LOOKUP_H */
index 5649ddc92c7afec706050afcb8c1937dfaa14ee4..88ec3b3cd695907c7d4f453c64573caff5a6ac89 100644 (file)
@@ -1,3 +1,8 @@
+2017-05-09  Nathan Sidwell  <nathan@acm.org>
+
+       * objc-gnu-runtime-abi-01.c (objc_add_static_instance): Use
+       pushdecl lang_hook.
+
 2017-05-04  Martin Sebor  <msebor@redhat.com>
 
        PR translation/80280
index beeec589841566ec73850c8123c9809fb8f5178e..d1686e659bdb4f8b12b1796f080b58bcb18a90b6 100644 (file)
@@ -888,7 +888,7 @@ objc_add_static_instance (tree constructor, tree class_decl)
   /* We may be writing something else just now.
      Postpone till end of input. */
   DECL_DEFER_OUTPUT (decl) = 1;
-  pushdecl_top_level (decl);
+  lang_hooks.decls.pushdecl (decl);
   rest_of_decl_compilation (decl, 1, 0);
 
   /* Add the DECL to the head of this CLASS' list.  */