https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42958
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|rguenth at gcc dot gnu.org |unassigned at gcc dot gnu.org Status|ASSIGNED |NEW --- Comment #27 from Richard Biener <rguenth at gcc dot gnu.org> --- Not working on this. The testcase, when not using stack arrays (aka -Ofast) still has malloc/free in the loop nest: D.4952 = D.4944 < 0; D.4953 = D.4944 + 1; atmp.5.span = 8; D.4954 = (void * restrict) __builtin_malloc (D.4952 ? 1 : MAX_EXPR <(unsigned long) (D.4953 * 8), 1>); D.4955 = D.4954; atmp.5.data = D.4955; ... S.6 = 0; while (1) { if (S.6 > D.4944) goto L.6; (*(real(kind=8)[0:] * restrict) atmp.5.data)[S.6] = *((real(kind=8) *) D.4930 + (sizetype) (((S.6 + D.4956) * D.4960 + D.4931) * izz.span)) * *((real(kind=8) *) D.4934 + (sizetype) (((S.6 + D.4957) * D.4961 + D.4962) * iy.span)); S.6 = S.6 + 1; } L.6:; S.6 = 0; while (1) { if (S.6 > D.4944) goto L.7; *((real(kind=8) *) D.4938 + (sizetype) (((S.6 + D.4958) * D.4963 + D.4964) * iyz.span)) = (*(real(kind=8)[0:] * restrict) atmp.5.data)[S.6]; S.6 = S.6 + 1; } L.7:; } __builtin_free ((void *) atmp.5.data);