diff options
author | Andrew Pinski <pinskia@gmail.com> | 2007-01-01 14:19:58 -0800 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2007-01-01 14:19:58 -0800 |
commit | c0893ec0e1dc23842dd2d478320beb1d9706ab8b (patch) | |
tree | 554942a234b954c8aa9774f91a3ce4a6b0964af4 | |
parent | ae1e2d4caa59a9e9f654d55dc59538c1056ee522 (diff) | |
download | gcc-c0893ec0e1dc23842dd2d478320beb1d9706ab8b.zip gcc-c0893ec0e1dc23842dd2d478320beb1d9706ab8b.tar.gz gcc-c0893ec0e1dc23842dd2d478320beb1d9706ab8b.tar.bz2 |
re PR middle-end/30253 (ICE with statement expression inside a conditional)
2007-01-01 Andrew Pinski <pinskia@gmail.com>
PR middle-end/30253
* gimplify (voidify_wrapper_expr): Update for
GIMPLIFY_MODIFY_STMT.
2007-01-01 Andrew Pinski <pinskia@gmail.com>
PR middle-end/30253
* gcc.c-torture/compile/statement-expression-1.c: New test.
From-SVN: r120321
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/gimplify.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/statement-expression-1.c | 10 |
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4b9e5ff..55ae03b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-01-01 Andrew Pinski <pinskia@gmail.com> + + PR middle-end/30253 + * gimplify (voidify_wrapper_expr): Update for + GIMPLIFY_MODIFY_STMT. + 2007-01-01 Andreas Schwab <schwab@suse.de> PR target/29166 diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 5df8579..01772bd 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -1014,8 +1014,9 @@ voidify_wrapper_expr (tree wrapper, tree temp) /* The wrapper is on the RHS of an assignment that we're pushing down. */ gcc_assert (TREE_CODE (temp) == INIT_EXPR + || TREE_CODE (temp) == GIMPLIFY_MODIFY_STMT || TREE_CODE (temp) == MODIFY_EXPR); - TREE_OPERAND (temp, 1) = *p; + GENERIC_TREE_OPERAND (temp, 1) = *p; *p = temp; } else diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7809241..ea08e48 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-01-01 Andrew Pinski <pinskia@gmail.com> + + PR middle-end/30253 + * gcc.c-torture/compile/statement-expression-1.c: New test. + 2007-01-01 Andreas Schwab <schwab@suse.de> PR target/29166 diff --git a/gcc/testsuite/gcc.c-torture/compile/statement-expression-1.c b/gcc/testsuite/gcc.c-torture/compile/statement-expression-1.c new file mode 100644 index 0000000..fb48602 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/statement-expression-1.c @@ -0,0 +1,10 @@ +/* PR middle-end/30253, We would ICE with statement expressions + in a conditional expression because we forgot to update the wrapper + function for the gimple modify statement. */ + +#define f(x) ({ unsigned tmp=x; tmp; }) + +unsigned foo(unsigned x) { + return __builtin_constant_p(x) ? 0 : f(x); +} + |