+2012-05-30 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/53501
+ * fold-const.c (fold_binary_loc): Make sure to call
+ fold_plusminus_mult_expr with the original sign of operands.
+
2012-05-30 Steven Bosscher <steven@gcc.gnu.org>
* Makefile.in: Fix many dependencies.
/* Handle (A1 * C1) + (A2 * C2) with A1, A2 or C1, C2 being the
same or one. Make sure type is not saturating.
fold_plusminus_mult_expr will re-associate. */
- if ((TREE_CODE (arg0) == MULT_EXPR
- || TREE_CODE (arg1) == MULT_EXPR)
+ if ((TREE_CODE (op0) == MULT_EXPR
+ || TREE_CODE (op1) == MULT_EXPR)
&& !TYPE_SATURATING (type)
&& (!FLOAT_TYPE_P (type) || flag_associative_math))
{
- tree tem = fold_plusminus_mult_expr (loc, code, type, arg0, arg1);
+ tree tem = fold_plusminus_mult_expr (loc, code, type, op0, op1);
if (tem)
return tem;
}
/* Handle (A1 * C1) - (A2 * C2) with A1, A2 or C1, C2 being the
same or one. Make sure type is not saturating.
fold_plusminus_mult_expr will re-associate. */
- if ((TREE_CODE (arg0) == MULT_EXPR
- || TREE_CODE (arg1) == MULT_EXPR)
+ if ((TREE_CODE (op0) == MULT_EXPR
+ || TREE_CODE (op1) == MULT_EXPR)
&& !TYPE_SATURATING (type)
&& (!FLOAT_TYPE_P (type) || flag_associative_math))
{
- tree tem = fold_plusminus_mult_expr (loc, code, type, arg0, arg1);
+ tree tem = fold_plusminus_mult_expr (loc, code, type, op0, op1);
if (tem)
return tem;
}
+2012-05-30 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/53501
+ * gcc.dg/torture/pr53501.c: New testcase.
+ * c-c++-common/restrict-2.c: Adjust.
+
2012-05-30 Alan Modra <amodra@gmail.com>
* gcc.target/powerpc/powerpc.exp: Load torture-options.exp, call