On Tue, Jun 14, 2011 at 6:04 PM, H.J. Lu <hongjiu...@intel.com> wrote:
> long may be 32bit for x86-64. But long long is always 64bit. This > patch uses long long builtin for 64bit. OK for trunk? > > Thanks. > > > H.J. > --- > 2011-06-14 H.J. Lu <hongjiu...@intel.com> > > * longlong.h (count_leading_zeros): Use long long builtin for > x86-64. > (count_trailing_zeros): Likewise. > > diff --git a/gcc/longlong.h b/gcc/longlong.h > index 1bab76d..d5c0cd9 100644 > --- a/gcc/longlong.h > +++ b/gcc/longlong.h > @@ -430,8 +430,8 @@ UDItype __umulsidi3 (USItype, USItype); > : "0" ((UDItype) (n0)), \ > "1" ((UDItype) (n1)), \ > "rm" ((UDItype) (dv))) > -#define count_leading_zeros(count, x) ((count) = __builtin_clzl (x)) > -#define count_trailing_zeros(count, x) ((count) = __builtin_ctzl (x)) > +#define count_leading_zeros(count, x) ((count) = __builtin_clzll (x)) > +#define count_trailing_zeros(count, x) ((count) = __builtin_ctzll (x)) > #define UMUL_TIME 40 > #define UDIV_TIME 40 > #endif /* x86_64 */ Uh, this is also needed for MingW (LLP64 target). The patch is OK for SVN and release branches, but please also wait for approval from MingW maintainer. Do we need to updata glibc as well? Thanks, Uros.