https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98773
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- Ok, so it's eventually a multilib building (--enable-targets=all) though the errors sound like frontend errors ... But if just the tree-data-ref.c hunk is enough to trigger it then it hints at an issue with + if (!tree_fits_shwi_p (CHREC_RIGHT (chrec))) + return chrec_dont_know; + chrec_right = tree_to_shwi (CHREC_RIGHT (chrec)); which will interpret -1U as -1U instead of -1 for unsigned CHRECs. It will treat { 0, +, 255 } (all unsigned char) plain instead of re-interpreting it as { 0, +, -1 }, maybe that was a wrong "fix". I have a testcase, -O3 -m32 fails: char a[128]; void __attribute__((noipa)) foo () { for (unsigned i = 27; i >= 5; --i) a[i] = a[i-5]; } int main() { __builtin_memcpy (a, "Hello World", sizeof ("Hello World")); foo (); if (__builtin_memcmp (a + 5, "Hello World", sizeof ("Hello World")) != 0) __builtin_abort (); return 0; }