https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92938

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to jcmvbkbc from comment #5)
> (In reply to Andrew Pinski from comment #3)
> > I DON'T think it is a GCC issue. The code is broken.
> 
> Even if I remove all attributes from this function I see this issue:
> 
> static void bitmap_replace(unsigned long *dst,
>       const unsigned long *old,
>       const unsigned long *new,
>       const unsigned long *mask,
>       unsigned int nbits)
> {
>  if ((__builtin_constant_p(nbits) && (nbits) <= 32 && (nbits) > 0))
>   *dst = (*old & ~(*mask)) | (*new & *mask);
>  else
>   __bitmap_replace(dst, old, new, mask, nbits);
> }
> 
> Why is it broken?

What do you expect?  That it is either inlined or a call to __bitmap_replace
is emitted (with presumably is in .init* sections?)?

Reply via email to