https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78408 --- Comment #6 from Marc Glisse <glisse at gcc dot gnu.org> --- I don't think this is related to the loop, a = b = (struct buf) {} loses the assignment to b even if you put it alone on its line.