I overlooked this case when adding [[likely]] handling to cp_parser_statement.
Tested x86_64-pc-linux-gnu, applying to trunk. * parser.c (cp_parser_statement): Handle [[likely]] on compound-statement. --- gcc/cp/parser.c | 5 ++++- gcc/testsuite/g++.dg/cpp2a/attr-likely5.C | 9 +++++++++ gcc/cp/ChangeLog | 5 +++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp2a/attr-likely5.C diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 165039ef07c..da0ffacc218 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -11297,7 +11297,10 @@ cp_parser_statement (cp_parser* parser, tree in_statement_expr, } /* Anything that starts with a `{' must be a compound-statement. */ else if (token->type == CPP_OPEN_BRACE) - statement = cp_parser_compound_statement (parser, NULL, BCS_NORMAL, false); + { + std_attrs = process_stmt_hotness_attribute (std_attrs, attrs_loc); + statement = cp_parser_compound_statement (parser, NULL, BCS_NORMAL, false); + } /* CPP_PRAGMA is a #pragma inside a function body, which constitutes a statement all its own. */ else if (token->type == CPP_PRAGMA) diff --git a/gcc/testsuite/g++.dg/cpp2a/attr-likely5.C b/gcc/testsuite/g++.dg/cpp2a/attr-likely5.C new file mode 100644 index 00000000000..166214835d8 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp2a/attr-likely5.C @@ -0,0 +1,9 @@ +// { dg-do compile { target c++11 } } + +void f(int i) +{ + if (i) [[likely]] + { + ++i; + } +} diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index de1677f6142..3015d6806d0 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2019-09-17 Jason Merrill <ja...@redhat.com> + + * parser.c (cp_parser_statement): Handle [[likely]] on + compound-statement. + 2019-09-19 Jason Merrill <ja...@redhat.com> Revert: base-commit: aae9c42b1657673a0df0829380edc7c6b7e486b1 -- 2.21.0