This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix error level of warning about C++ style comments
On Tue, Jul 17, 2018 at 08:39:30AM -0700, Jason Franklin wrote:
> Thanks so much for the review! Below is an updated ChangeLog entry and
> patch.
Thanks.
I've fixed some formatting issues and testsuite (3 tests started FAILing),
plus added one more test, bootstrapped/regtested on x86_64-linux and
i686-linux and committed to trunk:
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.
* 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.
--- libcpp/lex.c.jj 2018-02-28 18:13:38.118386495 +0100
+++ libcpp/lex.c 2018-07-17 17:43:55.388843136 +0200
@@ -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;
}
}
--- gcc/testsuite/gcc.dg/cpp/pr61854-c90.c.jj 2017-04-19 15:46:24.412008934 +0200
+++ gcc/testsuite/gcc.dg/cpp/pr61854-c90.c 2018-07-17 17:50:05.458331441 +0200
@@ -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
}
--- gcc/testsuite/gcc.dg/cpp/pr61854-c94.c.jj 2017-04-19 15:46:25.265997760 +0200
+++ gcc/testsuite/gcc.dg/cpp/pr61854-c94.c 2018-07-17 17:50:22.670354143 +0200
@@ -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
}
--- gcc/testsuite/gcc.dg/cpp/pr61854-4.c.jj 2014-09-18 15:48:24.297978857 +0200
+++ gcc/testsuite/gcc.dg/cpp/pr61854-4.c 2018-07-17 17:49:37.289294264 +0200
@@ -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 } */
}
--- gcc/testsuite/gcc.dg/cpp/pr61854-8.c.jj 2018-07-17 17:52:29.633521672 +0200
+++ gcc/testsuite/gcc.dg/cpp/pr61854-8.c 2018-07-17 17:55:25.475753689 +0200
@@ -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;
+}
Jakub