diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 4a25ad94e4d9eff73e256adf925da19116112b01..3c09daa3f6490625c6aafd46a674d41b4295b34a 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 7bea3d20029672f2beb01f316bd3daa2adc3395f..f386eed275d9fe1e375968a1e24d04af5533b5ad 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 eaa4ba2824e4b0e6d5c9b6d0eb16a67c94d35322..318c32507ef87d0893a03bc5e72469b071583d54 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");