lex.c (_cpp_lex_direct): Use CPP_DL_NOTE instead of CPP_DL_PEDWARN...
authorJakub Jelinek <jakub@gcc.gnu.org>
Tue, 17 Jul 2018 18:10:57 +0000 (20:10 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 17 Jul 2018 18:10:57 +0000 (20:10 +0200)
* lex.c (_cpp_lex_direct): Use CPP_DL_NOTE instead of CPP_DL_PEDWARN,
CPP_DL_WARNING or CPP_DL_ERROR for note that diagnostics for C++ style
comments is reported only once per file and guard those calls on the
preceding cpp_error returning true.

* gcc.dg/cpp/pr61854-c90.c (foo): Expect a note, rather than error.
* gcc.dg/cpp/pr61854-c94.c (foo): Likewise.
* gcc.dg/cpp/pr61854-4.c (foo): Likewise.
* gcc.dg/cpp/pr61854-8.c: New test.

From-SVN: r262832

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/cpp/pr61854-4.c
gcc/testsuite/gcc.dg/cpp/pr61854-8.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/cpp/pr61854-c90.c
gcc/testsuite/gcc.dg/cpp/pr61854-c94.c
libcpp/ChangeLog
libcpp/lex.c

index 201903959cab424487fb50e7fa9ed577d94b51ac..11936ee4610af9941587815337fddf7e06b123b7 100644 (file)
@@ -1,3 +1,10 @@
+2018-07-17  Jakub Jelinek  <jakub@redhat.com>
+
+       * gcc.dg/cpp/pr61854-c90.c (foo): Expect a note, rather than error.
+       * gcc.dg/cpp/pr61854-c94.c (foo): Likewise.
+       * gcc.dg/cpp/pr61854-4.c (foo): Likewise.
+       * gcc.dg/cpp/pr61854-8.c: New test.
+
 2018-07-17  David Edelsohn <dje.gcc@gmail.com>
 
        * gcc.target/powerpc/pr85456.c: Require longdouble128.
index 5cfa5a74923bb076bb58305ec6f9cb7799a97fce..3533ae04df9c0692257bfca829ab37e6beaf6cd4 100644 (file)
@@ -12,5 +12,5 @@ foo (void)
   // But error here.
 #endif
   /* { dg-error "C\\+\\+ style comments are not allowed in ISO C90" "comments"  { target *-*-*} 12 } */
-  /* { dg-error "reported only once" ""  { target *-*-*} 12 } */
+  /* { dg-message "note: \[^\n\r]*reported only once" ""  { target *-*-*} 12 } */
 }
diff --git a/gcc/testsuite/gcc.dg/cpp/pr61854-8.c b/gcc/testsuite/gcc.dg/cpp/pr61854-8.c
new file mode 100644 (file)
index 0000000..307513c
--- /dev/null
@@ -0,0 +1,12 @@
+/* PR c/61854 */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu89 -pedantic -w" } */
+
+int
+main (void)
+{
+  // Comment.
+  /* { dg-bogus "C\\+\\+ style comments are not allowed in ISO C90" "comments"  { target *-*-*} .-1 } */
+  /* { dg-bogus "note: \[^\n\r]*reported only once" ""  { target *-*-*} .-2 } */
+  return 0;
+}
index d7a9ba5849d3f58a53280332c71a29996995eaef..907e975668e08c8b7f952ae1fca8f2db2f075f70 100644 (file)
@@ -7,7 +7,7 @@ foo (void)
 {
   // 1st
   /* { dg-error "C\\+\\+ style comments are not allowed in ISO C90" "comments"  { target *-*-*} .-1 } */
-  /* { dg-error "reported only once" ""  { target *-*-*} .-2 } */
+  /* { dg-message "note: \[^\n\r]*reported only once" ""  { target *-*-*} .-2 } */
   // 2nd
   // 3rd
 }
index bd5ea6e23898acfbcad803d895467495e0d4154c..a8c301d406c2f9d8536ae34a6e90d2113c4f6a5c 100644 (file)
@@ -7,7 +7,7 @@ foo (void)
 {
   // 1st
   /* { dg-error "C\\+\\+ style comments are not allowed in ISO C90" "comments"  { target *-*-*} .-1 } */
-  /* { dg-error "reported only once" ""  { target *-*-*} .-2 } */
+  /* { dg-message "note: \[^\n\r]*reported only once" ""  { target *-*-*} .-2 } */
   // 2nd
   // 3rd
 }
index 7412800afc719864ab33d83c0b73523d03b5954f..3fef9c957cf2cdbdc2260ee849db7938676341cb 100644 (file)
@@ -1,3 +1,11 @@
+2018-07-17  Jason Franklin  <j_fra@fastmail.us>
+           Jakub Jelinek  <jakub@redhat.com>
+
+       * lex.c (_cpp_lex_direct): Use CPP_DL_NOTE instead of CPP_DL_PEDWARN,
+       CPP_DL_WARNING or CPP_DL_ERROR for note that diagnostics for C++ style
+       comments is reported only once per file and guard those calls on the
+       preceding cpp_error returning true.
+
 2018-07-03  Nathan Sidwell  <nathan@acm.org>
 
        Reorg line_map data structures for better packing.
index 37c365a3560bcd758ccf69375b43a26f52d38a41..a2592e045d28001c31a31a5d54cc2945ab6456dd 100644 (file)
@@ -2872,10 +2872,10 @@ _cpp_lex_direct (cpp_reader *pfile)
                   && CPP_PEDANTIC (pfile)
                   && ! buffer->warned_cplusplus_comments)
            {
-             cpp_error (pfile, CPP_DL_PEDWARN,
-                        "C++ style comments are not allowed in ISO C90");
-             cpp_error (pfile, CPP_DL_PEDWARN,
-                        "(this will be reported only once per input file)");
+             if (cpp_error (pfile, CPP_DL_PEDWARN,
+                            "C++ style comments are not allowed in ISO C90"))
+               cpp_error (pfile, CPP_DL_NOTE,
+                          "(this will be reported only once per input file)");
              buffer->warned_cplusplus_comments = 1;
            }
          /* Or if specifically desired via -Wc90-c99-compat.  */
@@ -2883,10 +2883,10 @@ _cpp_lex_direct (cpp_reader *pfile)
                   && ! CPP_OPTION (pfile, cplusplus)
                   && ! buffer->warned_cplusplus_comments)
            {
-             cpp_error (pfile, CPP_DL_WARNING,
-                        "C++ style comments are incompatible with C90");
-             cpp_error (pfile, CPP_DL_WARNING,
-                        "(this will be reported only once per input file)");
+             if (cpp_error (pfile, CPP_DL_WARNING,
+                            "C++ style comments are incompatible with C90"))
+               cpp_error (pfile, CPP_DL_NOTE,
+                          "(this will be reported only once per input file)");
              buffer->warned_cplusplus_comments = 1;
            }
          /* In C89/C94, C++ style comments are forbidden.  */
@@ -2906,11 +2906,12 @@ _cpp_lex_direct (cpp_reader *pfile)
                }
              else if (! buffer->warned_cplusplus_comments)
                {
-                 cpp_error (pfile, CPP_DL_ERROR,
-                            "C++ style comments are not allowed in ISO C90");
-                 cpp_error (pfile, CPP_DL_ERROR,
-                            "(this will be reported only once per input "
-                            "file)");
+                 if (cpp_error (pfile, CPP_DL_ERROR,
+                                "C++ style comments are not allowed in "
+                                "ISO C90"))
+                   cpp_error (pfile, CPP_DL_NOTE,
+                              "(this will be reported only once per input "
+                              "file)");
                  buffer->warned_cplusplus_comments = 1;
                }
            }