aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2010-08-05 12:41:31 -0700
committerRichard Henderson <rth@gcc.gnu.org>2010-08-05 12:41:31 -0700
commitbd95721f862876dac7d1560806b18015bb5bbeb6 (patch)
treeebb0bcbba694540435097fb9c41ec0f70c57ab41 /gcc/tree.h
parent55b324a67cf91568372f4e93c7dae01a572de9f4 (diff)
downloadgcc-bd95721f862876dac7d1560806b18015bb5bbeb6.zip
gcc-bd95721f862876dac7d1560806b18015bb5bbeb6.tar.gz
gcc-bd95721f862876dac7d1560806b18015bb5bbeb6.tar.bz2
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. From-SVN: r162920
Diffstat (limited to 'gcc/tree.h')
-rw-r--r--gcc/tree.h4
1 files changed, 1 insertions, 3 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index af8345a..931155c 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -2850,9 +2850,7 @@ struct GTY(()) tree_decl_with_rtl {
/* Specify that DECL_ALIGN(NODE) is a multiple of X. */
#define SET_DECL_OFFSET_ALIGN(NODE, X) \
- (FIELD_DECL_CHECK (NODE)->decl_common.off_align = exact_log2 ((X) & -(X)))
-/* 1 if the alignment for this type was requested by "aligned" attribute,
- 0 if it is the default for this type. */
+ (FIELD_DECL_CHECK (NODE)->decl_common.off_align = ffs_hwi (X) - 1)
/* For FIELD_DECLS, DECL_FCONTEXT is the *first* baseclass in
which this FIELD_DECL is defined. This information is needed when