diff options
author | Jeff Law <law@redhat.com> | 2005-01-28 09:35:46 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2005-01-28 09:35:46 -0700 |
commit | 139c978a44cbf1a53186af94715de74b83c542dc (patch) | |
tree | d24eeff0d47f7a0fd575cbe59759f9d8b0d58bed /gcc | |
parent | 1590d0d42640d48e23346b9baed714d2197035ae (diff) | |
download | gcc-139c978a44cbf1a53186af94715de74b83c542dc.zip gcc-139c978a44cbf1a53186af94715de74b83c542dc.tar.gz gcc-139c978a44cbf1a53186af94715de74b83c542dc.tar.bz2 |
fold-const.c (fold, [...]): Optimize 0 % X.
* fold-const.c (fold, case CEIL_MOD_EXPR): Optimize 0 % X.
(case FLOOR_MOD_EXPR, ROUND_MOD_EXPR, TRUNC_MOD_EXPR): Similarly.
From-SVN: r94376
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fold-const.c | 3 |
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8aac434..9e806b3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-01-28 Jeff Law <law@redhat.com> + + * fold-const.c (fold, case CEIL_MOD_EXPR): Optimize 0 % X. + (case FLOOR_MOD_EXPR, ROUND_MOD_EXPR, TRUNC_MOD_EXPR): Similarly. + 2005-01-28 Kazu Hirata <kazu@cs.umass.edu> * cse.c (cse_reg_info_free_list, cse_reg_info_used_list, diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 8e8a821..67a0217 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -7875,7 +7875,8 @@ fold (tree expr) case FLOOR_MOD_EXPR: case ROUND_MOD_EXPR: case TRUNC_MOD_EXPR: - if (integer_onep (arg1)) + /* 0 % X is always zero as is X % 1. */ + if (integer_zerop (arg0) || integer_onep (arg1)) return omit_one_operand (type, integer_zero_node, arg0); if (integer_zerop (arg1)) return t; |