https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112415
--- Comment #36 from John David Anglin <danglin at gcc dot gnu.org> --- Created attachment 56562 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=56562&action=edit fold_mem_offsets, prop_hardreg, rtl_dce and bbro dumps Comment #33 is wrong. The issue is not reload. It's okay to pick a call clobbered register as the code stands. The initialization of the register used for the store at offset 392B ends up outside the loop. It ends up in a call clobbered register and clobbered by the call to compiler_visit_expr1 in the loop. This occurs around the second call to compiler_visit_expr1 in compiler_call_helper Various initializations get moved out of the loop between the f-m-o and bbro passes. I think it's the bbro pass that's at fault but it could be something that happens before that causes the initialization to get moved outside the loop.