aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2005-01-28 09:35:46 -0700
committerJeff Law <law@gcc.gnu.org>2005-01-28 09:35:46 -0700
commit139c978a44cbf1a53186af94715de74b83c542dc (patch)
treed24eeff0d47f7a0fd575cbe59759f9d8b0d58bed /gcc
parent1590d0d42640d48e23346b9baed714d2197035ae (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/fold-const.c3
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;