------- Comment #7 from hjl at lucon dot org 2007-09-15 19:24 -------
This patch works for the testcase.
--- gcc/expr.c.chk 2007-09-07 07:53:42.000000000 -0700
+++ gcc/expr.c 2007-09-15 12:21:57.000000000 -0700
@@ -9117,7 +9117,6 @@ expand_expr_real_1 (tree exp, rtx target
case BIND_EXPR:
case INIT_EXPR:
case CONJ_EXPR:
- case COMPOUND_EXPR:
case PREINCREMENT_EXPR:
case PREDECREMENT_EXPR:
case POSTINCREMENT_EXPR:
@@ -9129,6 +9128,15 @@ expand_expr_real_1 (tree exp, rtx target
/* Lowered by gimplify.c. */
gcc_unreachable ();
+ case COMPOUND_EXPR:
+ while (TREE_CODE (exp) == COMPOUND_EXPR)
+ {
+ expand_expr (TREE_OPERAND (exp, 0), const0_rtx, VOIDmode,
+ EXPAND_NORMAL);
+ exp = TREE_OPERAND (exp, 1);
+ }
+ return expand_expr (exp, target, mode, EXPAND_NORMAL);
+
case CHANGE_DYNAMIC_TYPE_EXPR:
/* This is ignored at the RTL level. The tree level set
DECL_POINTER_ALIAS_SET of any variable to be 0, which is
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33423