diff options
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/fold-const.c | 8 | ||||
-rw-r--r-- | gcc/tree.def | 16 |
3 files changed, 28 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cdeb703..457c338 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2015-10-21 Eric Botcazou <ebotcazou@adacore.com> + + * tree.def (CEIL_DIV_EXPR, FLOOR_DIV_EXPR, ROUND_DIV_EXPR): Tweak + comments. + (TRUNC_MOD_EXPR, CEIL_MOD_EXPR, FLOOR_MOD_EXPR, ROUND_MOD_EXPR): + Add comments on sign of the result. + * fold-const.c (tree_binary_nonnegative_warnv_p) <FLOOR_MOD_EXPR>: + Recurse on operand #1 instead of operand #0. + <CEIL_MOD_EXPR>: Do not recurse. + <ROUND_MOD_EXPR>: Likewise. + 2015-10-21 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * cfgrtl.c (pass_free_cfg::execute): Adjust. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 042d43f..b7874a0 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -12908,11 +12908,13 @@ tree_binary_nonnegative_warnv_p (enum tree_code code, tree type, tree op0, return RECURSE (op0) && RECURSE (op1); case TRUNC_MOD_EXPR: - case CEIL_MOD_EXPR: - case FLOOR_MOD_EXPR: - case ROUND_MOD_EXPR: return RECURSE (op0); + case FLOOR_MOD_EXPR: + return RECURSE (op1); + + case CEIL_MOD_EXPR: + case ROUND_MOD_EXPR: default: return tree_simple_nonnegative_warnv_p (code, type); } diff --git a/gcc/tree.def b/gcc/tree.def index 64e0727..d0a3bd6 100644 --- a/gcc/tree.def +++ b/gcc/tree.def @@ -685,19 +685,27 @@ DEFTREECODE (MULT_HIGHPART_EXPR, "mult_highpart_expr", tcc_binary, 2) /* Division for integer result that rounds the quotient toward zero. */ DEFTREECODE (TRUNC_DIV_EXPR, "trunc_div_expr", tcc_binary, 2) -/* Division for integer result that rounds the quotient toward infinity. */ +/* Division for integer result that rounds it toward plus infinity. */ DEFTREECODE (CEIL_DIV_EXPR, "ceil_div_expr", tcc_binary, 2) -/* Division for integer result that rounds toward minus infinity. */ +/* Division for integer result that rounds it toward minus infinity. */ DEFTREECODE (FLOOR_DIV_EXPR, "floor_div_expr", tcc_binary, 2) -/* Division for integer result that rounds toward nearest integer. */ +/* Division for integer result that rounds it toward nearest integer. */ DEFTREECODE (ROUND_DIV_EXPR, "round_div_expr", tcc_binary, 2) -/* Four kinds of remainder that go with the four kinds of division. */ +/* Four kinds of remainder that go with the four kinds of division: */ + +/* The sign of the remainder is that of the dividend. */ DEFTREECODE (TRUNC_MOD_EXPR, "trunc_mod_expr", tcc_binary, 2) + +/* The sign of the remainder is the opposite of that of the divisor. */ DEFTREECODE (CEIL_MOD_EXPR, "ceil_mod_expr", tcc_binary, 2) + +/* The sign of the remainder is that of the divisor. */ DEFTREECODE (FLOOR_MOD_EXPR, "floor_mod_expr", tcc_binary, 2) + +/* The sign of the remainder is not predictable. */ DEFTREECODE (ROUND_MOD_EXPR, "round_mod_expr", tcc_binary, 2) /* Division for real result. */ |