From: pinskia Date: Mon, 1 Jan 2007 22:19:58 +0000 (+0000) Subject: 2007-01-01 Andrew Pinski X-Git-Tag: upstream/4.9.2~51340 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c0b3edb3fbf1ad42ac76df7d1d6207a3c1d9b367;p=platform%2Fupstream%2Flinaro-gcc.git 2007-01-01 Andrew Pinski PR middle-end/30253 * gimplify (voidify_wrapper_expr): Update for GIMPLIFY_MODIFY_STMT. 2007-01-01 Andrew Pinski PR middle-end/30253 * gcc.c-torture/compile/statement-expression-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120321 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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 + + PR middle-end/30253 + * gimplify (voidify_wrapper_expr): Update for + GIMPLIFY_MODIFY_STMT. + 2007-01-01 Andreas Schwab 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 + + PR middle-end/30253 + * gcc.c-torture/compile/statement-expression-1.c: New test. + 2007-01-01 Andreas Schwab 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); +} +