diff mbox

conditional notes after 'pedwarn'

Message ID CAFH4-disLCpfcgnC1jcRRKpRM+gcZJG79asgS7neX221iXsj8A@mail.gmail.com
State New
Headers show

Commit Message

Fabien Chêne April 5, 2014, 10:29 a.m. UTC
Hi,

Idem than the previous patchlets, this time concerning 'pedwarn'.
Tested x86_64 linux. OK to commit ?

cp/ChangeLog

2014-04-04  Fabien Chêne  <fabien@gcc.gnu.org>

    * pt.c (check_template_variable): Check for the return of pedwarn
    before emitting a note.
    * parser.c (cp_parser_lambda_introducer): Likewise.

Comments

Jason Merrill April 7, 2014, 1:16 p.m. UTC | #1
OK.

Jason
diff mbox

Patch

Index: gcc/cp/pt.c
===================================================================
--- gcc/cp/pt.c	(révision 209130)
+++ gcc/cp/pt.c	(copie de travail)
@@ -2304,10 +2304,10 @@  check_template_variable (tree decl)
 	       "%qD is not a static data member of a class template", decl);
   else if (template_header_count > wanted)
     {
-      pedwarn (DECL_SOURCE_LOCATION (decl), 0,
-	       "too many template headers for %D (should be %d)",
-	       decl, wanted);
-      if (CLASSTYPE_TEMPLATE_SPECIALIZATION (ctx))
+      bool warned = pedwarn (DECL_SOURCE_LOCATION (decl), 0,
+			     "too many template headers for %D (should be %d)",
+			     decl, wanted);
+      if (warned && CLASSTYPE_TEMPLATE_SPECIALIZATION (ctx))
 	inform (DECL_SOURCE_LOCATION (decl),
 		"members of an explicitly specialized class are defined "
 		"without a template header");
Index: gcc/cp/parser.c
===================================================================
--- gcc/cp/parser.c	(révision 209130)
+++ gcc/cp/parser.c	(copie de travail)
@@ -8961,10 +8961,10 @@  cp_parser_lambda_introducer (cp_parser*
 	  if (VAR_P (capture_init_expr)
 	      && decl_storage_duration (capture_init_expr) != dk_auto)
 	    {
-	      pedwarn (capture_token->location, 0, "capture of variable "
-		       "%qD with non-automatic storage duration",
-		       capture_init_expr);
-	      inform (0, "%q+#D declared here", capture_init_expr);
+	      if (pedwarn (capture_token->location, 0, "capture of variable "
+			   "%qD with non-automatic storage duration",
+			   capture_init_expr))
+		inform (0, "%q+#D declared here", capture_init_expr);
 	      continue;
 	    }