]> 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:16:16 +0000 (09:16 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Fri, 18 Oct 2019 09:16:16 +0000 (09:16 +0000)
Backport from 2019-10-18 trunk r277143.
PR target/86040
* config/avr/avr.c (avr_out_lpm): Do not shortcut-return.

From-SVN: r277149

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

index aa4db1c47f2a94d53b69dbd61fe0b5d3645c9a6a..2300b57f48db1eaa8059c81048b3029c5f3782c7 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-17  Segher Boessenkool  <segher@kernel.crashing.org>
 
        Backport from trunk
index ee3bd66e93f59e83811fb3a10fbc9956f79a73a7..4f8cbc6eac41180ca31742569cbb997af9f37fe4 100644 (file)
@@ -3579,13 +3579,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
@@ -3614,9 +3615,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