This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/52543] lower-subreg.c: code bloat of 300%-400% for multi-word memory splits


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52543

--- Comment #15 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-09-28 08:21:19 UTC ---
Author: gjl
Date: Fri Sep 28 08:21:06 2012
New Revision: 191820

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=191820
Log:
    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.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/avr/avr-protos.h
    trunk/gcc/config/avr/avr.c
    trunk/gcc/config/avr/avr.md


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]