mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 03:46:53 -05:00
re PR c++/31337 (ICE with statement expression)
PR c++/31337
* gimplify.c (gimplify_modify_expr): Discard the assignment of
zero-sized types after calling gimplify_modify_expr_rhs.
From-SVN: r127840
This commit is contained in:
committed by
Jason Merrill
parent
1e6b8c4419
commit
ffef818294
@@ -1,3 +1,9 @@
|
||||
2007-08-27 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/31337
|
||||
* gimplify.c (gimplify_modify_expr): Discard the assignment of
|
||||
zero-sized types after calling gimplify_modify_expr_rhs.
|
||||
|
||||
2007-08-24 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/32610
|
||||
|
||||
@@ -3532,8 +3532,16 @@ gimplify_modify_expr (tree *expr_p, tree *pre_p, tree *post_p, bool want_value)
|
||||
gcc_assert (TREE_CODE (*expr_p) == MODIFY_EXPR
|
||||
|| TREE_CODE (*expr_p) == INIT_EXPR);
|
||||
|
||||
/* For zero sized types only gimplify the left hand side and right hand side
|
||||
as statements and throw away the assignment. */
|
||||
/* See if any simplifications can be done based on what the RHS is. */
|
||||
ret = gimplify_modify_expr_rhs (expr_p, from_p, to_p, pre_p, post_p,
|
||||
want_value);
|
||||
if (ret != GS_UNHANDLED)
|
||||
return ret;
|
||||
|
||||
/* For zero sized types only gimplify the left hand side and right hand
|
||||
side as statements and throw away the assignment. Do this after
|
||||
gimplify_modify_expr_rhs so we handle TARGET_EXPRs of addressable
|
||||
types properly. */
|
||||
if (zero_sized_type (TREE_TYPE (*from_p)))
|
||||
{
|
||||
gimplify_stmt (from_p);
|
||||
@@ -3544,12 +3552,6 @@ gimplify_modify_expr (tree *expr_p, tree *pre_p, tree *post_p, bool want_value)
|
||||
return GS_ALL_DONE;
|
||||
}
|
||||
|
||||
/* See if any simplifications can be done based on what the RHS is. */
|
||||
ret = gimplify_modify_expr_rhs (expr_p, from_p, to_p, pre_p, post_p,
|
||||
want_value);
|
||||
if (ret != GS_UNHANDLED)
|
||||
return ret;
|
||||
|
||||
/* If the value being copied is of variable width, compute the length
|
||||
of the copy into a WITH_SIZE_EXPR. Note that we need to do this
|
||||
before gimplifying any of the operands so that we can resolve any
|
||||
|
||||
Reference in New Issue
Block a user