Commit b9b5c1b3 by Richard Kenner

(fold, case MULT_EXPR): Simplify MULT_EXPR of an EXACT_DIV_EXPR with

the same divisor as our multiplicand.

From-SVN: r6734
parent 6946afd3
......@@ -3820,6 +3820,14 @@ fold (expr)
if (integer_onep (arg1))
return non_lvalue (convert (type, arg0));
/* ((A / C) * C) is A if the division is an
EXACT_DIV_EXPR. Since C is normally a constant,
just check for one of the four possibilities. */
if (TREE_CODE (arg0) == EXACT_DIV_EXPR
&& operand_equal_p (TREE_OPERAND (arg0, 1), arg1, 0))
return TREE_OPERAND (arg0, 0);
/* (a * (1 << b)) is (a << b) */
if (TREE_CODE (arg1) == LSHIFT_EXPR
&& integer_onep (TREE_OPERAND (arg1, 0)))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment