https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111274
--- Comment #12 from sandra at gcc dot gnu.org --- Improved and tested patch posted here: https://gcc.gnu.org/pipermail/gcc-patches/2023-September/629616.html IIUC the temporaries introduced in non-full-expressions are bound in a block that encloses the entire full-expression. The restructuring that moves intervening code into the loop body operates on whole statements, not subexpressions, so I convinced myself there should be nothing to do here.