Quoting Richard Henderson <[email protected]>:
Look much closer. These patterns are 100% identical. The *move_frame_1 pattern will _never_ be matched, because such an insn will always be matched by move_frame.
move_frame only matches if:
operands[1] == frame_pointer_rtx || operands[1] == arg_pointer_rtx
move_frame_1 instead matches if:
(reload_in_progress || reload_completed)
&& (operands[1] == stack_pointer_rtx
|| operands[1] == hard_frame_pointer_rtx)
