https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112415
--- Comment #30 from John David Anglin <danglin at gcc dot gnu.org> --- 0x0019c684 <+588>: stw r23,0(r22) => 0x0019c688 <+592>: stw ret1,0(r21) 0x0019c68c <+596>: stw r31,0(r20) 0x0019c690 <+600>: b,l 0x198d58 <compiler_visit_expr1>,rp 0x0019c694 <+604>: stw ret0,0(r19) These instructions are in a loop: /* No * or ** args, so can use faster calling sequence */ for (i = 0; i < nelts; i++) { expr_ty elt = asdl_seq_GET(args, i); assert(elt->kind != Starred_kind); VISIT(c, expr, elt); } r21 is clobbered by VISIT call. Value is okay in first iteration. The initialization instructions are outside the loop: 0x0019c638 <+512>: ldo 184(r19),r22 0x0019c63c <+516>: ldw 184(r19),r14 0x0019c640 <+520>: ldo 188(r19),r21 0x0019c644 <+524>: ldw 188(r19),r13 0x0019c648 <+528>: ldo 18c(r19),r20 0x0019c64c <+532>: ldw 18c(r19),r12 0x0019c650 <+536>: ldw 190(r19),r11