From bec3c279a86d951003452727bca933e4fa7731ca Mon Sep 17 00:00:00 2001 From: Georg-Johann Lay Date: Fri, 18 Oct 2019 06:53:34 +0000 Subject: [PATCH] re PR target/86040 ([avr]: RAMPZ is not always cleared after loading __flashN data) PR target/86040 * config/avr/avr.c (avr_out_lpm): Do not shortcut-return. From-SVN: r277143 --- gcc/ChangeLog | 5 +++++ gcc/config/avr/avr.c | 15 ++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 273d13c92c3..2f4906eb0c2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2019-10-18 Georg-Johann Lay + + PR target/86040 + * config/avr/avr.c (avr_out_lpm): Do not shortcut-return. + 2019-10-18 Prathamesh Kulkarni Richard Sandiford diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index c630a309229..fc213895091 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -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 -- 2.30.2