OSDN Git Service

* cppinit.c (mark_named_operators): Split out from init_builtins.
authorneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 May 2002 18:55:27 +0000 (18:55 +0000)
committerneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 May 2002 18:55:27 +0000 (18:55 +0000)
(cpp_finish_options): Call it from here instead.
testsuite:
* gcc.dg/cpp/named_ops.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@53803 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/cppinit.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/cpp/named_ops.c [new file with mode: 0644]

index 83b976d..5e67ce2 100644 (file)
@@ -1,3 +1,8 @@
+2002-05-23  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+       * cppinit.c (mark_named_operators): Split out from init_builtins.
+       (cpp_finish_options): Call it from here instead.
+
 2002-05-23  Jason Thorpe  <thorpej@wasabisystems.com>
 
        * builtin-attrs.def: Update copyright years.
index 55451b5..9878241 100644 (file)
@@ -98,6 +98,7 @@ static void path_include              PARAMS ((cpp_reader *,
                                                 char *, int));
 static void init_library               PARAMS ((void));
 static void init_builtins              PARAMS ((cpp_reader *));
+static void mark_named_operators       PARAMS ((cpp_reader *));
 static void append_include_chain       PARAMS ((cpp_reader *,
                                                 char *, int, int));
 static struct search_path * remove_dup_dir     PARAMS ((cpp_reader *,
@@ -664,6 +665,23 @@ static const struct builtin operator_array[] =
 };
 #undef B
 
+/* Mark the C++ named operators in the hash table.  */
+static void
+mark_named_operators (pfile)
+     cpp_reader *pfile;
+{
+  const struct builtin *b;
+
+  for (b = operator_array;
+       b < (operator_array + ARRAY_SIZE (operator_array));
+       b++)
+    {
+      cpp_hashnode *hp = cpp_lookup (pfile, b->name, b->len);
+      hp->flags |= NODE_OPERATOR;
+      hp->value.operator = b->value;
+    }
+}
+
 /* Subroutine of cpp_read_main_file; reads the builtins table above and
    enters them, and language-specific macros, into the hash table.  */
 static void
@@ -682,16 +700,6 @@ init_builtins (pfile)
       hp->value.builtin = b->value;
     }
 
-  if (CPP_OPTION (pfile, cplusplus) && CPP_OPTION (pfile, operator_names))
-    for (b = operator_array;
-        b < (operator_array + ARRAY_SIZE (operator_array));
-        b++)
-      {
-       cpp_hashnode *hp = cpp_lookup (pfile, b->name, b->len);
-       hp->flags |= NODE_OPERATOR;
-       hp->value.operator = b->value;
-      }
-
   if (CPP_OPTION (pfile, cplusplus))
     _cpp_define_builtin (pfile, "__cplusplus 1");
   else if (CPP_OPTION (pfile, objc))
@@ -976,6 +984,10 @@ void
 cpp_finish_options (pfile)
      cpp_reader *pfile;
 {
+  /* Mark named operators before handling command line macros.  */
+  if (CPP_OPTION (pfile, cplusplus) && CPP_OPTION (pfile, operator_names))
+    mark_named_operators (pfile);
+
   /* Install builtins and process command line macros etc. in the order
      they appeared, but only if not already preprocessed.  */
   if (! CPP_OPTION (pfile, preprocessed))
index fb03406..4ae2f82 100644 (file)
@@ -1,3 +1,7 @@
+2002-05-23  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+       * gcc.dg/cpp/named_ops.c: New test.
+
 2002-05-23  Mark Mitchell  <mark@codesourcery.com>
 
        * gcc/testsuite/gcc.dg/weak-8.c: New test.
diff --git a/gcc/testsuite/gcc.dg/cpp/named_ops.c b/gcc/testsuite/gcc.dg/cpp/named_ops.c
new file mode 100644 (file)
index 0000000..d03684a
--- /dev/null
@@ -0,0 +1,11 @@
+/* Copyright (C) 2002 Free Software Foundation, Inc.  */
+
+/* { dg-do preprocess } */
+/* { dg-options -fpreprocessed } */
+
+/* Tests that C++ named ops are still there with -fpreprocessed.  */
+
+/* Source: Neil Booth, 23 May 2002.  */
+
+#if 2 xor 2
+#endif