diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-08-05 19:41:31 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-08-05 19:41:31 +0000 |
commit | 7e8d812e44fdbe205c18f462aa3977960d174728 (patch) | |
tree | ebb0bcbba694540435097fb9c41ec0f70c57ab41 /gcc/double-int.c | |
parent | df83cdc0a66a54c7ac5454a2063432a8ada5de9a (diff) | |
download | gcc-7e8d812e44fdbe205c18f462aa3977960d174728.tar.gz |
Replace exact_log2(x & -x) in favor of more direct computation.
* toplev.h (ctz_hwi, clz_hwi, ffs_hwi): New.
(floor_log2): Use clz_hwi.
(exact_log2): Use ctz_hwi.
* toplev.c (ctz_hwi, clz_hwi, ffs_hwi): New.
* builtins.c (fold_builtin_bitop): Use them.
* simplify-rtx.c (simplify_const_unary_operation): Likewise.
* combine.c (get_pos_from_mask): Use ctz_hwi.
* double-int.c (double_int_ctz): Likewise.
* explow.c (force_reg): Likewise.
* tree.h (SET_DECL_OFFSET_ALIGN): Use ffs_hwi.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162920 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/double-int.c')
-rw-r--r-- | gcc/double-int.c | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/gcc/double-int.c b/gcc/double-int.c index 29e720b2919..cb63f856df3 100644 --- a/gcc/double-int.c +++ b/gcc/double-int.c @@ -859,15 +859,7 @@ double_int_ctz (double_int a) unsigned bits = a.low ? 0 : HOST_BITS_PER_WIDE_INT; if (!w) return HOST_BITS_PER_DOUBLE_INT; -#if (GCC_VERSION >= 3004) - bits += CTZ_HWI (w); -#else - while (!(w & 1)) - { - w >>= 1; - bits += 1; - } -#endif + bits += ctz_hwi (w); return bits; } |