[Bug target/52461] [avr] XMEGA+EBI: RAMPZ clobbered while reading from flash

gjl at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Mar 21 13:24:00 GMT 2012


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

--- Comment #9 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-03-21 13:20:25 UTC ---
Author: gjl
Date: Wed Mar 21 13:20:20 2012
New Revision: 185605

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=185605
Log:
    PR rtl-optimization/52543
    PR target/52461
    * config/avr/avr-protos.h (avr_load_lpm): New prototype.
    * config/avr/avr.c (avr_mode_dependent_address_p): New function.
    (TARGET_MODE_DEPENDENT_ADDRESS_P): New define.
    (avr_load_libgcc_p): Restrict to __flash loads.
    (avr_out_lpm): Only handle 1-byte loads from __flash.
    (avr_load_lpm): New function.
    (avr_find_unused_d_reg): Remove.
    (avr_out_lpm_no_lpmx): Remove.
    (adjust_insn_length): Handle ADJUST_LEN_LOAD_LPM.
    * config/avr/avr.md (unspec): Add UNSPEC_LPM.
    (load_<mode>_libgcc): Use UNSPEC_LPM instead of MEM.
    (load_<mode>, load_<mode>_clobber): New insns.
    (mov<mode>): For multi-byte move from non-generic
    16-bit address spaces: Expand to load_<mode> resp.
    load_<mode>_clobber.
    (load<mode>_libgcc): Remove 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



More information about the Gcc-bugs mailing list