c-common.h (flag_no_builtin): Declare.
authorMark Mitchell <mark@codesourcery.com>
Wed, 18 Oct 2000 18:59:04 +0000 (18:59 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Wed, 18 Oct 2000 18:59:04 +0000 (18:59 +0000)
* c-common.h (flag_no_builtin): Declare.
(flag_no_nonansi_builtin): Likewise.
(c_common_nodes_and_builtins): Change prototype.
* c-common.c (flag_no_builtin): New variable.
(flag_no_nonansi_builtin): Likewise.
(c_common_nodes_and_builtins): Remove parameters.  Adjust
accordingly.
* c-decl.c (flag_no_builtin): Remove.
(flag_no_nonansi_builtin): Likewise.
(init_decl_processing): Adjust call to
c_common_nodes_and_builtins.

* cp-tree.h (cp_tree_index): Add CPTI_FAKE_STD.
(fake_std_node): New macro.
* decl.c (in_std): Rename to ...
(in_fake_std): ... this.
(flag_no_builtin): Remove.
(flag_no_nonansi_builtin): Likewise.
(walk_namespaces_r): Use fake_std_node.
(push_namespace): Use std_identifier.
(pop_namespace): Use in_fake_std.
(lookup_name_real): Use fake_std_node.
(init_decl_processing): When -fhonor-std, create the `std'
namespace.  Don't create a dummy fake_std_node in that case.
Adjust call to c_common_nodes_and_builtins.  Use std_identifier.
(builtin_function): Put builtins whose names don't begin
with `_' in the std namespace.
* decl2.c (flag_no_builtin): Remove.
(flag_no_nonansi_builtin): Likewise.
(set_decl_namespace): Use fake_std_node.
(validate_nonmember_using_decl): Likewise.
(do_using_directive): Likewise.
(handle_class_head): Likewise.
* dump.c (dequeue_and_dump): Likewise.
* except.c (init_exception_processing): Use std_identifier.
* init.c (build_member_call): Use fake_std_node.
* rtti.c (init_rtti_processing): Use std_identifier.

From-SVN: r36940

12 files changed:
gcc/ChangeLog
gcc/c-common.c
gcc/c-common.h
gcc/c-decl.c
gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/decl2.c
gcc/cp/dump.c
gcc/cp/except.c
gcc/cp/init.c
gcc/cp/rtti.c

index 22958f4fe42de0e4ad54ceecf2f8fc3b8636803f..88c5ee601953233fe30f9e1b17ca541aab156734 100644 (file)
@@ -1,3 +1,17 @@
+2000-10-18  Mark Mitchell  <mark@codesourcery.com>
+
+       * c-common.h (flag_no_builtin): Declare.
+       (flag_no_nonansi_builtin): Likewise.
+       (c_common_nodes_and_builtins): Change prototype.
+       * c-common.c (flag_no_builtin): New variable.
+       (flag_no_nonansi_builtin): Likewise.
+       (c_common_nodes_and_builtins): Remove parameters.  Adjust
+       accordingly.
+       * c-decl.c (flag_no_builtin): Remove.
+       (flag_no_nonansi_builtin): Likewise.
+       (init_decl_processing): Adjust call to
+       c_common_nodes_and_builtins.
+       
 2000-10-18  Marc Espie <espie@openbsd.org>
 
        * tm.texi (LIBGCC_SPEC): Synch with reality.
index 09cb949f4391f8332ad9b81116e6283c88b2ad3e..086177f5860f16ca563bddcd8fe47374a898862c 100644 (file)
@@ -140,6 +140,15 @@ cpp_reader  parse_in;
 
 tree c_global_trees[CTI_MAX];
 
+/* Nonzero means don't recognize the non-ANSI builtin functions.  */
+
+int flag_no_builtin;
+
+/* Nonzero means don't recognize the non-ANSI builtin functions.
+   -ansi sets this.  */
+
+int flag_no_nonansi_builtin;
+
 /* Nonzero means warn about possible violations of sequence point rules.  */
 
 int warn_sequence_point;
@@ -4767,16 +4776,10 @@ lang_get_alias_set (t)
 }
 
 /* Build tree nodes and builtin functions common to both C and C++ language
-   frontends.
-   CPLUS_MODE is nonzero if we are called from the C++ frontend, we generate
-   some stricter prototypes in that case.
-   NO_BUILTINS and NO_NONANSI_BUILTINS contain the respective values of
-   the language frontend flags flag_no_builtin and
-   flag_no_nonansi_builtin.  */
+   frontends.  */
 
 void
-c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
-    int cplus_mode, no_builtins, no_nonansi_builtins;
+c_common_nodes_and_builtins ()
 {
   tree temp;
   tree memcpy_ftype, memset_ftype, strlen_ftype;
@@ -4889,7 +4892,8 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
                                                 const_string_type_node,
                                                 endlink)));
 
-  traditional_len_type_node = (flag_traditional && ! cplus_mode
+  traditional_len_type_node = ((flag_traditional && 
+                               c_language != clk_cplusplus)
                               ? integer_type_node : sizetype);
   traditional_len_endlink = tree_cons (NULL_TREE, traditional_len_type_node,
                                       endlink);
@@ -4908,9 +4912,11 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
                           tree_cons (NULL_TREE, const_string_type_node,
                                      endlink));
 
-  traditional_ptr_type_node = (flag_traditional && ! cplus_mode
+  traditional_ptr_type_node = ((flag_traditional && 
+                               c_language != clk_cplusplus)
                               ? string_type_node : ptr_type_node);
-  traditional_cptr_type_node = (flag_traditional && ! cplus_mode
+  traditional_cptr_type_node = ((flag_traditional && 
+                                c_language != clk_cplusplus)
                               ? const_string_type_node : const_ptr_type_node);
 
   /* Prototype for memcpy.  */
@@ -4970,7 +4976,7 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
                    BUILT_IN_NORMAL, NULL_PTR);
   /* Define alloca, ffs as builtins.
      Declare _exit just to mark it as volatile.  */
-  if (! no_builtins && ! no_nonansi_builtins)
+  if (! flag_no_builtin && ! flag_no_nonansi_builtin)
     {
 #ifndef SMALL_STACK
       temp = builtin_function ("alloca", ptr_ftype_sizetype,
@@ -5166,7 +5172,7 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
     builtin_function ("__builtin_fputs", int_ftype_any,
                      BUILT_IN_FPUTS, BUILT_IN_NORMAL, "fputs");
 
-  if (! no_builtins)
+  if (! flag_no_builtin)
     {
       builtin_function ("abs", int_ftype_int, BUILT_IN_ABS,
                        BUILT_IN_NORMAL, NULL_PTR);
@@ -5178,7 +5184,7 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
                        BUILT_IN_NORMAL, NULL_PTR);
       builtin_function ("labs", long_ftype_long, BUILT_IN_LABS,
                        BUILT_IN_NORMAL, NULL_PTR);
-      if (flag_isoc99 || ! no_nonansi_builtins)
+      if (flag_isoc99 || ! flag_no_nonansi_builtin)
        builtin_function ("llabs", longlong_ftype_longlong, BUILT_IN_LLABS,
                          BUILT_IN_NORMAL, NULL_PTR);
       builtin_function ("memcpy", memcpy_ftype, BUILT_IN_MEMCPY,
@@ -5225,27 +5231,19 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
 
       /* Declare these functions volatile
         to avoid spurious "control drops through" warnings.  */
-      temp = builtin_function ("abort", cplus_mode ? void_ftype : void_ftype_any,
+      temp = builtin_function ("abort", 
+                              ((c_language == clk_cplusplus)
+                               ? void_ftype : void_ftype_any),
                               0, NOT_BUILT_IN, NULL_PTR);
       TREE_THIS_VOLATILE (temp) = 1;
       TREE_SIDE_EFFECTS (temp) = 1;
 
-#if 0 /* ??? The C++ frontend used to do this.  */
-      /* Well, these are actually ANSI, but we can't set DECL_BUILT_IN on
-        them...  */
-      DECL_BUILT_IN_NONANSI (temp) = 1;
-#endif
       temp = builtin_function ("exit",
-                              cplus_mode ? void_ftype_int : void_ftype_any,
+                              ((c_language == clk_cplusplus)
+                               ? void_ftype_int : void_ftype_any),
                               0, NOT_BUILT_IN, NULL_PTR);
       TREE_THIS_VOLATILE (temp) = 1;
       TREE_SIDE_EFFECTS (temp) = 1;
-
-#if 0 /* ??? The C++ frontend used to do this.  */
-      /* Well, these are actually ANSI, but we can't set DECL_BUILT_IN on
-        them...  */
-      DECL_BUILT_IN_NONANSI (temp) = 1;
-#endif
     }
 
 #if 0
index a4bd09e9274b4cffbef12f2a3433dc2707567a7e..1776bad1b71bb11ad758cc6350bc38c790f40942 100644 (file)
@@ -370,6 +370,15 @@ extern int flag_hosted;
 
 extern int flag_noniso_default_format_attributes;
 
+/* Nonzero means don't recognize any builtin functions.  */
+
+extern int flag_no_builtin;
+
+/* Nonzero means don't recognize the non-ANSI builtin functions.
+   -ansi sets this.  */
+
+extern int flag_no_nonansi_builtin;
+
 /* Nonzero means warn about suggesting putting in ()'s.  */
 
 extern int warn_parentheses;
@@ -454,7 +463,7 @@ extern tree c_build_qualified_type              PARAMS ((tree, int));
 
 /* Build tree nodes and builtin functions common to both C and C++ language
    frontends.  */
-extern void c_common_nodes_and_builtins                PARAMS ((int, int, int));
+extern void c_common_nodes_and_builtins                PARAMS ((void));
 
 extern tree build_va_arg                       PARAMS ((tree, tree));
 
index 9ca6f97a5ad8539adfffc1ee54b648d48b458a6e..8621e8a8c288782c8a9eb623970108ea36bf3eb3 100644 (file)
@@ -343,15 +343,6 @@ int flag_short_wchar;
 
 int flag_no_asm;
 
-/* Nonzero means don't recognize any builtin functions.  */
-
-int flag_no_builtin;
-
-/* Nonzero means don't recognize the non-ANSI builtin functions.
-   -ansi sets this.  */
-
-int flag_no_nonansi_builtin;
-
 /* Nonzero means do some things the same way PCC does.  */
 
 int flag_traditional;
@@ -3144,7 +3135,7 @@ init_decl_processing ()
     = TREE_TYPE (IDENTIFIER_GLOBAL_VALUE (get_identifier (PTRDIFF_TYPE)));
   unsigned_ptrdiff_type_node = unsigned_type (ptrdiff_type_node);
 
-  c_common_nodes_and_builtins (0, flag_no_builtin, flag_no_nonansi_builtin);
+  c_common_nodes_and_builtins ();
 
   endlink = void_list_node;
   ptr_ftype_void = build_function_type (ptr_type_node, endlink);
index d4f8e47f4dce050bde1695ed720222c95e8be25b..f0fbee8d94536805fdb955a6d13f2c82ad9a92e6 100644 (file)
@@ -1,3 +1,31 @@
+2000-10-18  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (cp_tree_index): Add CPTI_FAKE_STD.
+       (fake_std_node): New macro.
+       * decl.c (in_std): Rename to ...
+       (in_fake_std): ... this.
+       (flag_no_builtin): Remove.
+       (flag_no_nonansi_builtin): Likewise.
+       (walk_namespaces_r): Use fake_std_node.
+       (push_namespace): Use std_identifier.
+       (pop_namespace): Use in_fake_std.
+       (lookup_name_real): Use fake_std_node.
+       (init_decl_processing): When -fhonor-std, create the `std'
+       namespace.  Don't create a dummy fake_std_node in that case.
+       Adjust call to c_common_nodes_and_builtins.  Use std_identifier.
+       (builtin_function): Put builtins whose names don't begin
+       with `_' in the std namespace.
+       * decl2.c (flag_no_builtin): Remove.
+       (flag_no_nonansi_builtin): Likewise.
+       (set_decl_namespace): Use fake_std_node.
+       (validate_nonmember_using_decl): Likewise.
+       (do_using_directive): Likewise.
+       (handle_class_head): Likewise.
+       * dump.c (dequeue_and_dump): Likewise.
+       * except.c (init_exception_processing): Use std_identifier.
+       * init.c (build_member_call): Use fake_std_node.
+       * rtti.c (init_rtti_processing): Use std_identifier.
+        
 2000-10-17  Mark Mitchell  <mark@codesourcery.com>
 
        * cp-tree.h (back_end_hook): Remove declaration.
index 689c859599e2849e2cae2e48547e130244ba3800..ed25a8fc10e29bd10bb357d7c556eeeeed557f47 100644 (file)
@@ -586,6 +586,7 @@ enum cp_tree_index
     CPTI_VTBL_TYPE,
     CPTI_VTBL_PTR_TYPE,
     CPTI_STD,
+    CPTI_FAKE_STD,
     CPTI_ABI,
     CPTI_TYPE_INFO_TYPE,
     CPTI_TINFO_DECL_ID,
@@ -679,7 +680,14 @@ extern tree cp_global_trees[CPTI_MAX];
 #define unknown_type_node              cp_global_trees[CPTI_UNKNOWN_TYPE]
 #define vtbl_type_node                 cp_global_trees[CPTI_VTBL_TYPE]
 #define vtbl_ptr_type_node             cp_global_trees[CPTI_VTBL_PTR_TYPE]
+/* When the `std' namespace is a real namespace, this is the
+   corresponding NAMESPACE_DECL.  When the `std' namespace is an alias
+   for the global namespace, this is NULL_TREE.  */
 #define std_node                       cp_global_trees[CPTI_STD]
+/* When the `std' namespace is a real namespace, this is the
+   ERROR_MARK_NODE.  Otherwise, this is a dummy NAMESPACE_DECL that
+   should be treated like the global namespace.  */
+#define fake_std_node                   cp_global_trees[CPTI_FAKE_STD]
 #define abi_node                        cp_global_trees[CPTI_ABI]
 #define type_info_type_node            cp_global_trees[CPTI_TYPE_INFO_TYPE]
 #define tinfo_decl_id                  cp_global_trees[CPTI_TINFO_DECL_ID]
@@ -744,7 +752,6 @@ extern tree cp_global_trees[CPTI_MAX];
 #define cp_push_exception_identifier    cp_global_trees[CPTI_PUSH_EXCEPTION_IDENTIFIER]
 /* The name of the std namespace.  */
 #define std_identifier                  cp_global_trees[CPTI_STD_IDENTIFIER]
-
 #define lang_name_c                     cp_global_trees[CPTI_LANG_NAME_C]
 #define lang_name_cplusplus             cp_global_trees[CPTI_LANG_NAME_CPLUSPLUS]
 #define lang_name_java                  cp_global_trees[CPTI_LANG_NAME_JAVA]
index 8e7443f09be2ee02f681d01249d2501210574bd3..ee4571c94e840b09c45c86378419b700b79fa96d 100644 (file)
@@ -267,8 +267,10 @@ tree cp_global_trees[CPTI_MAX];
 
 static tree global_type_node;
 
-/* Namespace std.  */
-int in_std;
+/* If non-zero, this is the number of times we have entered the `std'
+   namespace when we are treating that namespace as an alias for the
+   global namespace.  */
+static int in_fake_std;
 
 /* Expect only namespace names now. */
 static int only_namespace_names;
@@ -354,15 +356,6 @@ int flag_noniso_default_format_attributes = 1;
 
 extern int flag_short_double;
 
-/* Nonzero means don't recognize any builtin functions.  */
-
-extern int flag_no_builtin;
-
-/* Nonzero means don't recognize the non-ANSI builtin functions.
-   -ansi sets this.  */
-
-extern int flag_no_nonansi_builtin;
-
 /* Nonzero if we want to conserve space in the .o files.  We do this
    by putting uninitialized data and runtime initialized data into
    .common instead of .data at the expense of not flagging multiple
@@ -1829,7 +1822,7 @@ walk_namespaces_r (namespace, f, data)
       if (!DECL_LANG_SPECIFIC (current))
        {
          /* Hmm. std. */
-         my_friendly_assert (current == std_node, 393);
+         my_friendly_assert (current == fake_std_node, 393);
          continue;
        }
 
@@ -2324,9 +2317,10 @@ push_namespace (name)
       implicit_use = 1;
     }
   else if (current_namespace == global_namespace
-          && name == DECL_NAME (std_node))
+          && !flag_honor_std
+          && name == std_identifier)
     {
-      in_std++;
+      in_fake_std++;
       return;
     }
   else
@@ -2376,8 +2370,8 @@ pop_namespace ()
 {
   if (current_namespace == global_namespace)
     {
-      my_friendly_assert (in_std>0, 980421);
-      in_std--;
+      my_friendly_assert (in_fake_std > 0, 980421);
+      in_fake_std--;
       return;
     }
   current_namespace = CP_DECL_CONTEXT (current_namespace);
@@ -5888,7 +5882,7 @@ lookup_name_real (name, prefer_type, nonclass, namespaces_only)
         flags |= LOOKUP_TEMPLATES_EXPECTED;
 
       /* std:: becomes :: for now.  */
-      if (got_scope == std_node)
+      if (got_scope && got_scope == fake_std_node)
        got_scope = void_type_node;
 
       if (got_scope)
@@ -6364,6 +6358,22 @@ init_decl_processing ()
   NAMESPACE_LEVEL (global_namespace) = global_binding_level;
   declare_namespace_level ();
 
+  /* Create the `std' namespace.  */
+  if (flag_honor_std)
+    {
+      push_namespace (std_identifier);
+      std_node = current_namespace;
+      pop_namespace ();
+      fake_std_node = error_mark_node;
+    }
+  else
+    {
+      fake_std_node = build_decl (NAMESPACE_DECL,
+                                 std_identifier,
+                                 void_type_node);
+      pushdecl (fake_std_node);
+    }
+  
   /* Define `int' and `char' first so that dbx will output them first.  */
   record_builtin_type (RID_INT, NULL_PTR, integer_type_node);
   record_builtin_type (RID_CHAR, "char", char_type_node);
@@ -6519,7 +6529,7 @@ init_decl_processing ()
     = build_pointer_type (build_qualified_type (void_type_node,
                                                TYPE_QUAL_CONST));
   vtt_parm_type = build_pointer_type (const_ptr_type_node);
-  c_common_nodes_and_builtins (1, flag_no_builtin, flag_no_nonansi_builtin);
+  c_common_nodes_and_builtins ();
   lang_type_promotes_to = convert_type_from_ellipsis;
 
   void_ftype_ptr
@@ -6615,12 +6625,6 @@ init_decl_processing ()
   layout_type (vtbl_ptr_type_node);
   record_builtin_type (RID_MAX, NULL_PTR, vtbl_ptr_type_node);
 
-  std_node = build_decl (NAMESPACE_DECL,
-                        flag_honor_std 
-                        ? get_identifier ("fake std") : std_identifier,
-                        void_type_node);
-  pushdecl (std_node);
-  
   if (flag_new_abi)
     {
       push_namespace (get_identifier ("__cxxabiv1"));
@@ -6637,7 +6641,7 @@ init_decl_processing ()
   {
     tree bad_alloc_type_node, newtype, deltype;
     if (flag_honor_std)
-      push_namespace (get_identifier ("std"));
+      push_namespace (std_identifier);
     bad_alloc_type_node = xref_tag
       (class_type_node, get_identifier ("bad_alloc"), 1);
     if (flag_honor_std)
@@ -6801,10 +6805,20 @@ builtin_function (name, type, code, class, libname)
 
   my_friendly_assert (DECL_CONTEXT (decl) == NULL_TREE, 392);
 
+  /* All builtins that don't begin with an `_' should go in the `std'
+     namespace.  */
+  if (flag_honor_std && name[0] != '_') 
+    {
+      push_namespace (std_identifier);
+      DECL_CONTEXT (decl) = std_node;
+    }
+  pushdecl (decl);
+  if (flag_honor_std && name[0] != '_')
+    pop_namespace ();
+
   /* Since `pushdecl' relies on DECL_ASSEMBLER_NAME instead of DECL_NAME,
      we cannot change DECL_ASSEMBLER_NAME until we have installed this
      function in the namespace.  */
-  pushdecl (decl);
   if (libname)
     DECL_ASSEMBLER_NAME (decl) = get_identifier (libname);
   make_function_rtl (decl);
index fc319b7d7ae727f94dc3dafb0940bd05b57014b1..9c61e559f130caf84dac7a5bb18a4aa6e07490d2 100644 (file)
@@ -159,15 +159,6 @@ int flag_no_asm;
 
 int flag_no_gnu_keywords;
 
-/* Nonzero means don't recognize the non-ANSI builtin functions.  */
-
-int flag_no_builtin;
-
-/* Nonzero means don't recognize the non-ANSI builtin functions.
-   -ansi sets this.  */
-
-int flag_no_nonansi_builtin;
-
 /* Nonzero means do some things the same way PCC does.  Only provided so
    the compiler will link.  */
 
@@ -4600,7 +4591,7 @@ set_decl_namespace (decl, scope, friendp)
      int friendp;
 {
   tree old;
-  if (scope == std_node)
+  if (scope == fake_std_node)
     scope = global_namespace;
   /* Get rid of namespace aliases. */
   scope = ORIGINAL_NAMESPACE (scope);
@@ -5107,7 +5098,7 @@ validate_nonmember_using_decl (decl, scope, name)
      tree *name;
 {
   if (TREE_CODE (decl) == SCOPE_REF
-      && TREE_OPERAND (decl, 0) == std_node)
+      && TREE_OPERAND (decl, 0) == fake_std_node)
     {
       if (namespace_bindings_p ()
          && current_namespace == global_namespace)
@@ -5353,7 +5344,7 @@ void
 do_using_directive (namespace)
      tree namespace;
 {
-  if (namespace == std_node)
+  if (namespace == fake_std_node)
     return;
   /* using namespace A::B::C; */
   if (TREE_CODE (namespace) == SCOPE_REF)
@@ -5452,7 +5443,7 @@ handle_class_head (aggr, scope, id)
   
       if (current == NULL_TREE)
         current = current_namespace;
-      if (scope == std_node)
+      if (scope == fake_std_node)
         scope = global_namespace;
       if (scope == NULL_TREE)
         scope = global_namespace;
index 83c7db060587f02ddc91a6a4e5b152f2c371ba7d..d528e1c76d4507de41ae1e75d5564b7f280b1991 100644 (file)
@@ -606,7 +606,7 @@ dequeue_and_dump (di)
     case NAMESPACE_DECL:
       /* The fake `::std' namespace does not have DECL_LANG_SPECIFIC,
         and therefore many other macros do not work on it.  */
-      if (t == std_node)
+      if (t == fake_std_node)
        break;
       if (DECL_NAMESPACE_ALIAS (t))
        dump_child ("alis", DECL_NAMESPACE_ALIAS (t));
index a26cb1a6580a3ed05836269db529226d08ae3f0a..d3c3d169e6791c3aeef21d352e11789aa6cd3694 100644 (file)
@@ -143,7 +143,7 @@ init_exception_processing ()
   tree vtype = build_function_type (void_type_node, void_list_node);
   
   if (flag_honor_std)
-    push_namespace (get_identifier ("std"));
+    push_namespace (std_identifier);
   terminate_node = build_cp_library_fn_ptr ("terminate", vtype);
   TREE_THIS_VOLATILE (terminate_node) = 1;
   TREE_NOTHROW (terminate_node) = 1;
index e31554fe56b93ee888eb6ba1f71ca4f30278713d..a9360e52723c8045ca9c6213c2c17c4d0ec3e747 100644 (file)
@@ -1485,7 +1485,7 @@ build_member_call (type, name, parmlist)
   if (DECL_P (name))
     name = DECL_NAME (name);
 
-  if (type == std_node)
+  if (type == fake_std_node)
     return build_x_function_call (do_scoped_id (name, 0), parmlist,
                                  current_class_ref);
   if (TREE_CODE (type) == NAMESPACE_DECL)
@@ -1620,7 +1620,7 @@ build_offset_ref (type, name)
   if (TREE_CODE (name) == TEMPLATE_DECL)
     return name;
 
-  if (type == std_node)
+  if (type == fake_std_node)
     return do_scoped_id (name, 0);
 
   if (processing_template_decl || uses_template_parms (type))
index 3eea2d2261eaf672ed413ee57715d526b5a49351..f172c5fe66764bdf553c6535205c48676ebcb9e8 100644 (file)
@@ -80,7 +80,7 @@ void
 init_rtti_processing ()
 {
   if (flag_honor_std)
-    push_namespace (get_identifier ("std"));
+    push_namespace (std_identifier);
   type_info_type_node = xref_tag
     (class_type_node, get_identifier ("type_info"), 1);
   if (flag_honor_std)