https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92938
jcmvbkbc at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |UNCONFIRMED Resolution|FIXED |--- --- Comment #5 from jcmvbkbc at gcc dot gnu.org --- (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?