https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106533
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Keywords| |missed-optimization Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2022-08-05 --- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- The code should iterate and eventually distribute inner loops of perfect loop nests. In fact for void bar (int *a, int * __restrict b) { for (int k = 0; k < 10; k++) for (int j = 0; j < 100000; ++j) a[j] = b[j]; } I do see > ./cc1 -quiet t.c -O2 -fopt-info t.c:4:23: optimized: Loop 2 distributed: split to 0 loops and 1 library calls. the issue is likely that void bar (int *a, int * __restrict b) { for (int k = 0; k < 10; k++) { for (int j = 0; j < 100000; ++j) a[j] = b[j]; __builtin_printf ("Foo!"); } } causes distribution to fail early in find_seed_stmts_for_distribution and that's taken as fatal error. I have a fix.