https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113576
--- Comment #22 from Hongtao Liu <liuhongt at gcc dot gnu.org> --- typedef unsigned long mp_limb_t; typedef long mp_size_t; typedef unsigned long mp_bitcnt_t; typedef mp_limb_t *mp_ptr; typedef const mp_limb_t *mp_srcptr; #define GMP_LIMB_BITS (sizeof(mp_limb_t) * 8) #define GMP_LIMB_MAX (~ (mp_limb_t) 0) mp_bitcnt_t __attribute__((noipa)) mpn_common_scan (mp_limb_t limb, mp_size_t i, mp_srcptr up, mp_size_t un, mp_limb_t ux) { unsigned cnt; while (limb == 0) { i++; if (i == un) return (ux == 0 ? ~(mp_bitcnt_t) 0 : un * GMP_LIMB_BITS); limb = ux ^ up[i]; } return limb; } int main () { mp_limb_t up[10000]; for (int i = 0; i != 10000; i++) up[i] = 1 << 8; up[2000] = 1; mp_bitcnt_t res = mpn_common_scan (0, 0, up, 10000, 1 << 8); if (res != 257) __builtin_abort (); return 1; } aborted with -O3 -march=skylake-avx512.