https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65249
--- Comment #21 from Kazumoto Kojima <kkojima at gcc dot gnu.org> --- (In reply to Oleg Endo from comment #20) > Just for my understanding ... at which time does the modified expand pattern > kick in? Before RA, during RA or after RA? It's a bit confusing, because > operands[0] is already a hard-reg and operands[1] is supposed to be a pseudo > ... Before RA, during expand phase. It's generated by function.c: expand_function_end with emit_move_insn (crtl->return_rtx, DECL_RTL (DECL_RESULT (current_function_decl)) essentially. In this case, crtl->return_rtx is (reg/i:DI 0 r0).