Index: gcc/config/avr/avr.md
===================================================================
--- gcc/config/avr/avr.md	(revision 145000)
+++ gcc/config/avr/avr.md	(working copy)
@@ -1480,7 +1490,7 @@
   ""
   "{mov __tmp_reg__,%A0\;mov %A0,%D0\;mov %D0, __tmp_reg__\;mov __tmp_reg__,%B0\;mov %B0,%C0\;mov %C0, __tmp_reg__|movw __tmp_reg__,%A0\;movw %A0,%C0\;movw %C0, __tmp_reg__\;clr __zero_reg__}"
   "reload_completed
-   && REGNO (operands[0]) != REGNO (operands[1])"
+   && !reg_overlap_mentioned_p(operands[0], operands[1])"
   [(set (match_dup 2) (match_dup 5))
    (set (match_dup 3) (match_dup 4))]
   "unsigned int si_lo_off = subreg_lowpart_offset (HImode, SImode);
@@ -1509,7 +1519,7 @@
 	mov %B0,%A0
 	mov %A0, __tmp_reg__"
   "reload_completed
-   && REGNO (operands[0]) != REGNO (operands[1])"
+   && !reg_overlap_mentioned_p(operands[0], operands[1])"
   [(set (match_dup 2) (match_dup 9))
    (set (match_dup 3) (match_dup 6))
    (set (match_dup 4) (match_dup 7))
@@ -1546,7 +1556,7 @@
 	mov %C0,%D0
 	mov %D0, __tmp_reg__"
   "reload_completed
-   && REGNO (operands[0]) != REGNO (operands[1])"
+   && !reg_overlap_mentioned_p(operands[0], operands[1])"
   [(set (match_dup 2) (match_dup 7))
    (set (match_dup 3) (match_dup 8))
    (set (match_dup 4) (match_dup 9))
