Commit 05f3fda3 by Richard Stallman

(build_binary_op): For TRUNC_MOD_EXPR and FLOOR_MOD_EXPR,

don't shorten when divisor might be -1.

From-SVN: r5893
parent fc51af1a
......@@ -1982,7 +1982,14 @@ build_binary_op (code, orig_op0, orig_op1, convert_p)
case TRUNC_MOD_EXPR:
case FLOOR_MOD_EXPR:
if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE)
shorten = 1;
/* Although it would be tempting to shorten always here, doing so loses
on some targets, since the modulo instruction is undefined if the
quotient can't be represented in the computation mode. We shorten
only if unsigned or if dividing by something we know != -1. */
shorten = (TREE_UNSIGNED (orig_op0)
|| (TREE_CODE (op1) == INTEGER_CST
&& (TREE_INT_CST_LOW (op1) != -1
|| TREE_INT_CST_HIGH (op1) != -1)));
break;
case TRUTH_ANDIF_EXPR:
......
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