From 51970b3e3331087ad597ccd3c5df9f788e9fe3e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabien=20Ch=C3=AAne?= 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 * 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 4a25ad94e4d..3c09daa3f64 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2014-04-09 Fabien ChĂȘne + + * 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 PR c++/59115 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 7bea3d20029..f386eed275d 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 eaa4ba2824e..318c32507ef 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");