+2007-10-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/33709
+ * fold-const.c (fold_binary): If one argument is COMPOUND_EXPR,
+ convert second operand of COMPOUND_EXPR to the original type of
+ that argument.
+
2007-10-30 Richard Guenther <rguenther@suse.de>
* tree-ssa-operands.c (add_vars_for_offset): Fix exit test
if (TREE_CODE (arg0) == COMPOUND_EXPR)
return build2 (COMPOUND_EXPR, type, TREE_OPERAND (arg0, 0),
fold_build2 (code, type,
- TREE_OPERAND (arg0, 1), op1));
+ fold_convert (TREE_TYPE (op0),
+ TREE_OPERAND (arg0, 1)),
+ op1));
if (TREE_CODE (arg1) == COMPOUND_EXPR
&& reorder_operands_p (arg0, TREE_OPERAND (arg1, 0)))
return build2 (COMPOUND_EXPR, type, TREE_OPERAND (arg1, 0),
- fold_build2 (code, type,
- op0, TREE_OPERAND (arg1, 1)));
+ fold_build2 (code, type, op0,
+ fold_convert (TREE_TYPE (op1),
+ TREE_OPERAND (arg1, 1))));
if (TREE_CODE (arg0) == COND_EXPR || COMPARISON_CLASS_P (arg0))
{