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");