]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR target/86040 ([avr]: RAMPZ is not always cleared after loading __flas...
authorGeorg-Johann Lay <avr@gjlay.de>
Fri, 18 Oct 2019 09:10:20 +0000 (09:10 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Fri, 18 Oct 2019 09:10:20 +0000 (09:10 +0000)
Backport from 2019-10-18 trunk r277143.
PR target/86040
* config/avr/avr.c (avr_out_lpm): Do not shortcut-return.

From-SVN: r277147

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

index 9179ad4b3b6106ebbc3a9cf1f4c2033e5df7a899..ca0db0bce3451cf5d0afe997dad3beb03dcbfd16 100644 (file)
@@ -1,3 +1,10 @@
+2019-10-18  Georg-Johann Lay  <avr@gjlay.de>
+
+       Backport from 2019-10-18 trunk r277143.
+
+       PR target/86040
+       * config/avr/avr.c (avr_out_lpm): Do not shortcut-return.
+
 2019-10-18  Iain Sandoe  <iain@sandoe.co.uk>
 
        Backport from mainline
index a9f72b314c2d397d2892a624c87e076682bcac09..cb4b14ae379013fe5d51b7a0724a3bf13b89bb59 100644 (file)
@@ -3797,13 +3797,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
@@ -3832,9 +3833,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