aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@physics.uc.edu>2005-11-03 15:21:15 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2005-11-03 07:21:15 -0800
commit08330ec2ad5a413f7e88fbb48092dd0d27000850 (patch)
tree93fded5899e717286d00db6895ac18a4548de59a /gcc/gimplify.c
parentb88b7ced9b63f5f77b03dcd7fe114a152ac1dbd5 (diff)
downloadgcc-08330ec2ad5a413f7e88fbb48092dd0d27000850.zip
gcc-08330ec2ad5a413f7e88fbb48092dd0d27000850.tar.gz
gcc-08330ec2ad5a413f7e88fbb48092dd0d27000850.tar.bz2
re PR middle-end/24589 (wrong code with zero sized structs on CONSTRUCTOR)
2005-11-03 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/24589 * gimplify.c (gimplify_expr) <case CONSTRUCTOR>: Add the expressions to a statement list instead of gimplifying them. 2005-11-03 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/24589 * gcc.c-torture/execute/zero-struct-2.c: New test. From-SVN: r106436
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r--gcc/gimplify.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index b7d891e..52e70bd 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -4312,18 +4312,19 @@ gimplify_expr (tree *expr_p, tree *pre_p, tree *post_p,
{
unsigned HOST_WIDE_INT ix;
constructor_elt *ce;
+ tree temp = NULL_TREE;
for (ix = 0;
VEC_iterate (constructor_elt, CONSTRUCTOR_ELTS (*expr_p),
ix, ce);
ix++)
if (TREE_SIDE_EFFECTS (ce->value))
- gimplify_expr (&ce->value, pre_p, post_p,
- gimple_test_f, fallback);
+ append_to_statement_list (ce->value, &temp);
- *expr_p = NULL_TREE;
+ *expr_p = temp;
+ ret = GS_OK;
}
-
- ret = GS_ALL_DONE;
+ else
+ ret = GS_ALL_DONE;
break;
/* The following are special cases that are not handled by the