This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]