https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103390
sandra at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |burnus at gcc dot gnu.org, | |sandra at gcc dot gnu.org --- Comment #2 from sandra at gcc dot gnu.org --- It looks to me like this is due to a collision between my patch to re-do the SHAPE intrinsic (commit 1af78e731feb9327a17c99ebaa19a4cca1125caf) and Tobias's big patch to completely reimplement CFI descriptor conversion (commit 64f9623765da3306b0ab6a47997dc5d62c2ea261) and the copy-in/copy-out for array parameters with the CONTIGUOUS attribute. I think the thing the gimplifier is crashing on is this assignment that appears in the copy-out loop after the call to s: (integer(kind=4)) (((unsigned int) z.dim[S.3].ubound - (unsigned int) z.dim[S.3].lbound) + 1) = (*(integer(kind=4)[1] * restrict) atmp.0.data)[S.3 + D.4263]; The left-hand side of the assignment is not an lvalue because of the nop_expr. Besides fixing the bug, it would be good if we could make it smart enough not to generate the copy-in/copy-out loops at all because it knows perfectly well that the temporary holding the result of the SHAPE intrinsic is already contiguous!