https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70093
--- Comment #8 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Probably. Because this doesn't (to my surprise) ICE: void foo (int n) { struct S { int a[n]; }; struct S fn (void) { struct S s; s.a[0] = 1; return s; } struct S x; x = fn (); // just "fn();" ICEs }