From 51970b3e3331087ad597ccd3c5df9f788e9fe3e5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabien=20Ch=C3=AAne?= <fabien@gcc.gnu.org>
Date: Wed, 9 Apr 2014 21:51:17 +0200
Subject: [PATCH] pt.c (check_template_variable): Check for the return of
 pedwarn before emitting a note.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

2014-04-09  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.

From-SVN: r209252
---
 gcc/cp/ChangeLog | 6 ++++++
 gcc/cp/parser.c  | 8 ++++----
 gcc/cp/pt.c      | 8 ++++----
 3 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 4a25ad94e4d9..3c09daa3f649 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2014-04-09  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.
+
 2014-04-08  Paolo Carlini  <paolo.carlini@oracle.com>
 
 	PR c++/59115
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 7bea3d200296..f386eed275d9 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -8961,10 +8961,10 @@ cp_parser_lambda_introducer (cp_parser* parser, tree lambda_expr)
 	  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;
 	    }
 
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index eaa4ba2824e4..318c32507ef8 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -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");
-- 
GitLab