diff options
author | Georg-Johann Lay <avr@gjlay.de> | 2019-10-18 06:53:34 +0000 |
---|---|---|
committer | Georg-Johann Lay <gjl@gcc.gnu.org> | 2019-10-18 06:53:34 +0000 |
commit | bec3c279a86d951003452727bca933e4fa7731ca (patch) | |
tree | 4903f501579b963b075fd9463196a78b5c2b1256 /gcc | |
parent | 8d1a718e0685688e763d768d357e8ed84db22d30 (diff) | |
download | gcc-bec3c279a86d951003452727bca933e4fa7731ca.zip gcc-bec3c279a86d951003452727bca933e4fa7731ca.tar.gz gcc-bec3c279a86d951003452727bca933e4fa7731ca.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/avr/avr.c | 15 |
2 files changed, 13 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 273d13c..2f4906e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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> diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index c630a30..fc21389 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 |