summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2007-01-01 22:19:58 +0000
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2007-01-01 22:19:58 +0000
commitc0b3edb3fbf1ad42ac76df7d1d6207a3c1d9b367 (patch)
tree554942a234b954c8aa9774f91a3ce4a6b0964af4
parentf6eff11b1b74ee1a351fc375c0ee8ca95864814a (diff)
downloadppe42-gcc-c0b3edb3fbf1ad42ac76df7d1d6207a3c1d9b367.tar.gz
ppe42-gcc-c0b3edb3fbf1ad42ac76df7d1d6207a3c1d9b367.zip
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120321 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/gimplify.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/statement-expression-1.c10
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4b9e5ff975a..55ae03bf3a1 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 5df8579913a..01772bd5b02 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 78092410a68..ea08e48e492 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 00000000000..fb4860256ad
--- /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);
+}
+
OpenPOWER on IntegriCloud