diff options
author | Georg-Johann Lay <avr@gjlay.de> | 2013-07-22 10:18:52 +0000 |
---|---|---|
committer | Georg-Johann Lay <gjl@gcc.gnu.org> | 2013-07-22 10:18:52 +0000 |
commit | d5a6ef827fe40c01e6284b5bbf3c2e987987445c (patch) | |
tree | f4b89b6167c74cc0dbea087a4cbcfc74d4df3979 | |
parent | 14ab1eaf2a303262fb2b11ee456eb5b984b83c65 (diff) | |
download | gcc-d5a6ef827fe40c01e6284b5bbf3c2e987987445c.zip gcc-d5a6ef827fe40c01e6284b5bbf3c2e987987445c.tar.gz gcc-d5a6ef827fe40c01e6284b5bbf3c2e987987445c.tar.bz2 |
avr.c (avr_out_xload): No SBIS around LPM so that instruction sequence is 1 byte shorter.
* config/avr/avr.c (avr_out_xload): No SBIS around LPM so that
instruction sequence is 1 byte shorter.
From-SVN: r201121
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/avr/avr.c | 8 |
2 files changed, 7 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f0260dd..98cc565 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-07-22 Georg-Johann Lay <avr@gjlay.de> + + * config/avr/avr.c (avr_out_xload): No SBIS around LPM so that + instruction sequence is 1 byte shorter. + 2013-07-22 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.md (nonlocal_goto_receiver): Delete insn if diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 6d95c10..14a3eee7 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -3079,14 +3079,10 @@ avr_out_xload (rtx insn ATTRIBUTE_UNUSED, rtx *op, int *plen) xop[2] = lpm_addr_reg_rtx; xop[3] = AVR_HAVE_LPMX ? op[0] : lpm_reg_rtx; - if (plen) - *plen = 0; + avr_asm_len (AVR_HAVE_LPMX ? "lpm %3,%a2" : "lpm", xop, plen, -1); avr_asm_len ("sbrc %1,7" CR_TAB - "ld %3,%a2" CR_TAB - "sbrs %1,7", xop, plen, 3); - - avr_asm_len (AVR_HAVE_LPMX ? "lpm %3,%a2" : "lpm", xop, plen, 1); + "ld %3,%a2", xop, plen, 2); if (REGNO (xop[0]) != REGNO (xop[3])) avr_asm_len ("mov %0,%3", xop, plen, 1); |