From c26065cc38586f9d014b0f04a54dfa0e52c23189 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Wed, 21 Oct 2015 21:10:49 +0000 Subject: [PATCH] tree.def (CEIL_DIV_EXPR, [...]): Tweak comments. * 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) : Recurse on operand #1 instead of operand #0. : Do not recurse. : Likewise. From-SVN: r229146 --- gcc/ChangeLog | 11 +++++++++++ gcc/fold-const.c | 8 +++++--- gcc/tree.def | 16 ++++++++++++---- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cdeb703dbb7..457c3385f87 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2015-10-21 Eric Botcazou + + * 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) : + Recurse on operand #1 instead of operand #0. + : Do not recurse. + : Likewise. + 2015-10-21 Trevor Saunders * cfgrtl.c (pass_free_cfg::execute): Adjust. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 042d43fa70f..b7874a08c0b 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 64e07270a7e..d0a3bd68398 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. */ -- 2.30.2