https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91640
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |9.3 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Note gimplification fails because we are evaluating in an lvalue context but got -_7 in the end. In the past we've hacked around Fortran oddities by doing tem = -_7 and returning tem here, simply using a temporary as lvalue which means the value assigned is lost (IIRC for things like assinging to a literal constant which could happen in parameter context). Full statement: -_7 = MEM[(real(kind=4)[3] *)_4][_5] and .original has D.3938 = -1; S.3 = 1; while (1) { if (S.3 > 3) goto L.2; -z[S.3 + -1] = (*(real(kind=4)[3] * restrict) atmp.0.data)[S.3 + D.3938]; S.3 = S.3 + 1; } L.2:;