re PR target/86040 ([avr]: RAMPZ is not always cleared after loading __flashN data)
authorGeorg-Johann Lay <avr@gjlay.de>
Fri, 18 Oct 2019 06:53:34 +0000 (06:53 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Fri, 18 Oct 2019 06:53:34 +0000 (06:53 +0000)
PR target/86040
* config/avr/avr.c (avr_out_lpm): Do not shortcut-return.

From-SVN: r277143

gcc/ChangeLog
gcc/config/avr/avr.c

index 273d13c92c31a4013c38136789477bbf011edbc6..2f4906eb0c2b05995e398e14709d3fc2c46e73ab 100644 (file)
@@ -1,3 +1,8 @@
+2019-10-18  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR target/86040
+       * config/avr/avr.c (avr_out_lpm): Do not shortcut-return.
+
 2019-10-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
            Richard Sandiford  <richard.sandiford@arm.com>
 
index c630a309229b2e997ef801b563c39b7fedaf5e40..fc213895091da1ebdb5a8d01338b9368380fc03c 100644 (file)
@@ -3771,13 +3771,14 @@ avr_out_lpm (rtx_insn *insn, rtx *op, int *plen)
           gcc_unreachable();
 
         case 1:
-          return avr_asm_len ("%4lpm %0,%a2", xop, plen, 1);
+          avr_asm_len ("%4lpm %0,%a2", xop, plen, 1);
+          break;
 
         case 2:
           if (REGNO (dest) == REG_Z)
-            return avr_asm_len ("%4lpm %5,%a2+" CR_TAB
-                                "%4lpm %B0,%a2" CR_TAB
-                                "mov %A0,%5", xop, plen, 3);
+            avr_asm_len ("%4lpm %5,%a2+" CR_TAB
+                         "%4lpm %B0,%a2" CR_TAB
+                         "mov %A0,%5", xop, plen, 3);
           else
             {
               avr_asm_len ("%4lpm %A0,%a2+" CR_TAB
@@ -3806,9 +3807,9 @@ avr_out_lpm (rtx_insn *insn, rtx *op, int *plen)
                        "%4lpm %B0,%a2+", xop, plen, 2);
 
           if (REGNO (dest) == REG_Z - 2)
-            return avr_asm_len ("%4lpm %5,%a2+" CR_TAB
-                                "%4lpm %C0,%a2" CR_TAB
-                                "mov %D0,%5", xop, plen, 3);
+            avr_asm_len ("%4lpm %5,%a2+" CR_TAB
+                         "%4lpm %C0,%a2" CR_TAB
+                         "mov %D0,%5", xop, plen, 3);
           else
             {
               avr_asm_len ("%4lpm %C0,%a2+" CR_TAB