]> git.ipfire.org Git - thirdparty/gcc.git/commit
re PR rtl-optimization/52543 (lower-subreg.c: code bloat of 300%-400% for multi-word...
authorGeorg-Johann Lay <avr@gjlay.de>
Fri, 28 Sep 2012 08:21:06 +0000 (08:21 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Fri, 28 Sep 2012 08:21:06 +0000 (08:21 +0000)
commit3fd1e31dc5e6b1017a0a49c1b6d17c1e1e268b27
treecb5b381dedfa92278ef86432edd69d0a6e334ac4
parentaf710874e9402567635008a88279e9ab02227b2d
re PR rtl-optimization/52543 (lower-subreg.c: code bloat of 300%-400% for multi-word memory splits)

PR rtl-optimization/52543
* config/avr/avr.c (avr_mode_dependent_address_p): Return true for
all non-generic address spaces.
(TARGET_SECONDARY_RELOAD): New hook define to...
(avr_secondary_reload): ...this new static function.
* config/avr/avr.md (reload_in<mode>): New insns.
Undo r185605 (mostly):
* config/avr/avr-protos.h (avr_load_lpm): Remove.
* config/avr/avr.c (avr_load_libgcc_p): Don't restrict to __flash loads.
(avr_out_lpm): Also handle loads > 1 byte.
(avr_load_lpm): Remove.
(avr_find_unused_d_reg): New static function.
(avr_out_lpm_no_lpmx): New static function.
(adjust_insn_length): Remove ADJUST_LEN_LOAD_LPM.
* config/avr/avr.md (unspec): Remove UNSPEC_LPM.
(load_<mode>_libgcc): Use MEM instead of UNSPEC_LPM.
(load_<mode>, load_<mode>_clobber): Remove.
(mov<mode>): For multi-byte move from non-generic
16-bit address spaces: Expand to *mov<mode> again.
(load<mode>_libgcc): New expander.
(split-lpmx): Remove split.

From-SVN: r191820
gcc/ChangeLog
gcc/config/avr/avr-protos.h
gcc/config/avr/avr.c
gcc/config/avr/avr.md