This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 2/3] Optimize strchrnul with unrolling, better header and unaligned loads


On Tue, 26 May 2015, Ondřej Bílka wrote:

> +static always_inline
> +int
> +found_in_long_bytes(char *s, unsigned long int cmask, char **result)
> +{
> +  const unsigned long int *lptr = (const unsigned long int *) s;
> +  unsigned long int mask = contains_zero (*lptr) | contains_zero (*lptr ^ cmask);
> +  if (mask)
> +    {
> +      *result = s + ffsl (mask) / 8 - 1;

If this gets used in strchr, note ffsl is in the user's namespace.  Are 
you sure this will always be inlined by all supported GCC versions on all 
supported architectures (or converted to a call to a libgcc __clz* 
function, which is just as good in namespace terms)?

-- 
Joseph S. Myers
joseph@codesourcery.com

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]