From e0710fcf7dc70054a9a20ab1b8d77f4fef26ef2c Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Thu, 19 Sep 2019 15:41:17 -0400 Subject: [PATCH] Handle [[likely]] on compound-statement. I overlooked this case when adding [[likely]] handling to cp_parser_statement. * parser.c (cp_parser_statement): Handle [[likely]] on compound-statement. From-SVN: r275978 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/parser.c | 5 ++++- gcc/testsuite/g++.dg/cpp2a/attr-likely5.C | 9 +++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp2a/attr-likely5.C 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 + + * parser.c (cp_parser_statement): Handle [[likely]] on + compound-statement. + 2019-09-19 Jason Merrill Revert: 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; + } +} -- 2.30.2