From d82f829905cfe6cb47d073825f680900274ce764 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 18 Feb 2021 22:17:52 +0100 Subject: c: Fix ICE with -fexcess-precision=standard [PR99136] The following testcase ICEs on i686-linux, because c_finish_return wraps c_fully_folded retval back into EXCESS_PRECISION_EXPR, but when the function return type is void, we don't call convert_for_assignment on it that would then be fully folded again, but just put the retval into RETURN_EXPR's operand, so nothing removes it anymore and during gimplification we ICE as EXCESS_PRECISION_EXPR is not handled. This patch fixes it by not adding that EXCESS_PRECISION_EXPR in functions returning void, the return value is ignored and all we need is evaluate any side-effects of the expression. 2021-02-18 Jakub Jelinek PR c/99136 * c-typeck.c (c_finish_return): Don't wrap retval into EXCESS_PRECISION_EXPR in functions that return void. * gcc.dg/pr99136.c: New test. --- gcc/c/c-typeck.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gcc/c') diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c index 725dc51..4e6d369 100644 --- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -10740,7 +10740,9 @@ c_finish_return (location_t loc, tree retval, tree origtype) retval = TREE_OPERAND (retval, 0); } retval = c_fully_fold (retval, false, NULL); - if (semantic_type) + if (semantic_type + && valtype != NULL_TREE + && TREE_CODE (valtype) != VOID_TYPE) retval = build1 (EXCESS_PRECISION_EXPR, semantic_type, retval); } -- cgit v1.1 From bf81237eccb1d5d2d8078b1d2c5a0b9cc0258d61 Mon Sep 17 00:00:00 2001 From: GCC Administrator Date: Fri, 19 Feb 2021 00:16:21 +0000 Subject: Daily bump. --- gcc/c/ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gcc/c') diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 1fee3e7..c979741 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,9 @@ +2021-02-18 Jakub Jelinek + + PR c/99136 + * c-typeck.c (c_finish_return): Don't wrap retval into + EXCESS_PRECISION_EXPR in functions that return void. + 2021-02-11 Marek Polacek * c-parser.c (c_parser_if_statement): Use vec_free. -- cgit v1.1 From ea5a82df9ba0c9d23e386290d24fc920968a8695 Mon Sep 17 00:00:00 2001 From: Martin Sebor Date: Wed, 24 Feb 2021 08:57:59 -0700 Subject: PR middle-end/97172 - ICE: tree code 'ssa_name' is not supported in LTO streams gcc/ChangeLog: PR middle-end/97172 * attribs.c (attr_access::free_lang_data): Clear attribute arg spec from function arguments. gcc/c/ChangeLog: PR middle-end/97172 * c-decl.c (free_attr_access_data): Clear attribute arg spec. gcc/testsuite/ChangeLog: PR middle-end/97172 * gcc.dg/pr97172-2.c: New test. --- gcc/c/c-decl.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'gcc/c') diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index a5852a3..b559ed5 100644 --- a/gcc/c/c-decl.c +++ b/gcc/c/c-decl.c @@ -12166,6 +12166,10 @@ free_attr_access_data () /* Iterate over all functions declared in the translation unit. */ FOR_EACH_FUNCTION (n) { + for (tree parm = DECL_ARGUMENTS (n->decl); parm; parm = TREE_CHAIN (parm)) + if (tree attrs = DECL_ATTRIBUTES (parm)) + attr_access::free_lang_data (attrs); + tree fntype = TREE_TYPE (n->decl); if (!fntype) continue; -- cgit v1.1 From 4028d01a050b478f245aab08702000976b7add2d Mon Sep 17 00:00:00 2001 From: GCC Administrator Date: Thu, 25 Feb 2021 00:16:29 +0000 Subject: Daily bump. --- gcc/c/ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'gcc/c') diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index c979741..545f84b 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,8 @@ +2021-02-24 Martin Sebor + + PR middle-end/97172 + * c-decl.c (free_attr_access_data): Clear attribute arg spec. + 2021-02-18 Jakub Jelinek PR c/99136 -- cgit v1.1 From 6ddedd3efa3fe482f76a4037521a06b3ac9f2a8b Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Fri, 5 Mar 2021 11:41:44 +0100 Subject: OpenACC: C/C++ - fix async parsing [PR99137] gcc/c/ChangeLog: PR c/99137 * c-parser.c (c_parser_oacc_clause_async): Reject comma expressions. gcc/cp/ChangeLog: PR c/99137 * parser.c (cp_parser_oacc_clause_async): Reject comma expressions. gcc/testsuite/ChangeLog: PR c/99137 * c-c++-common/goacc/asyncwait-1.c: Update dg-error; add additional test. --- gcc/c/c-parser.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc/c') diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index 2a49d07..5cdeb21 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -14332,7 +14332,7 @@ c_parser_oacc_clause_async (c_parser *parser, tree list) { c_parser_consume_token (parser); - t = c_parser_expression (parser).value; + t = c_parser_expr_no_commas (parser, NULL).value; if (!INTEGRAL_TYPE_P (TREE_TYPE (t))) c_parser_error (parser, "expected integer expression"); else if (t == error_mark_node -- cgit v1.1 From ceae9533826aabaf4c78d173c60e3bedeffc6955 Mon Sep 17 00:00:00 2001 From: GCC Administrator Date: Sat, 6 Mar 2021 00:16:43 +0000 Subject: Daily bump. --- gcc/c/ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'gcc/c') diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 545f84b..214e57b 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,8 @@ +2021-03-05 Tobias Burnus + + PR c/99137 + * c-parser.c (c_parser_oacc_clause_async): Reject comma expressions. + 2021-02-24 Martin Sebor PR middle-end/97172 -- cgit v1.1