diff options
author | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-18 17:51:33 +0000 |
---|---|---|
committer | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-18 17:51:33 +0000 |
commit | 3a2befe0229228d44c1ac896372ba529d1bf1b95 (patch) | |
tree | d3974797da01650d35b9530a06b0fcb14d63f6c0 | |
parent | 96a9428be1a1072e2a4208e0d0a76ecfe9dbfcdc (diff) | |
download | gcc-3a2befe0229228d44c1ac896372ba529d1bf1b95.tar.gz |
PR target/47744
* config/i386/i386.c (ix86_decompose_address): Allow only subregs
of DImode hard registers in PLUS address chains.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176413 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 22 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 7 |
2 files changed, 18 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index faed53d917d..6597ecd6746 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-07-18 Uros Bizjak <ubizjak@gmail.com> + + PR target/47744 + * config/i386/i386.c (ix86_decompose_address): Allow only subregs + of DImode hard registers in PLUS address chains. + 2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> PR bootstrap/49769 @@ -281,15 +287,14 @@ (READONLY_DATA_SECTION_ASM_OP): Remove. (TARGET_ASM_NAMED_SECTION): Move from here... * config/avr/avr.c: ...to here. - (avr_asm_init_sections): Set unnamed callback of - readonly_data_section. + (avr_asm_init_sections): Set unnamed callback of readonly_data_section. (avr_asm_named_section): Make static. 2011-07-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> PR bootstrap/49739 - * config.gcc (extra_parts): Add crtprec32.o crtprec64.o crtp - rec80.o crtfastmath.o for Linux/x86. + * config.gcc (extra_parts): Add crtprec32.o crtprec64.o crtprec80.o + and crtfastmath.o for Linux/x86. 2011-07-14 Bernd Schmidt <bernds@codesourcery.com> @@ -319,8 +324,7 @@ estimate_insn_tick, estimate_shadow_tick): New functions. (prune_ready_list): New arg shadows_only_p. All callers changed. If true, remove everything that isn't SHADOW_P. Look up delay - pairs and estimate ticks to avoid scheduling the first insn too - early. + pairs and estimate ticks to avoid scheduling the first insn too early. (verify_shadows): New function. (schedule_block): Add machinery to enable backtracking. (sched_init): Take sched_no_dce into account when setting @@ -385,8 +389,7 @@ 2011-07-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> PR target/49541 - * config/sol2.h (LIB_SPEC): Simplify. - Move LIB_THREAD_LDFLAGS_SPEC ... + * config/sol2.h (LIB_SPEC): Simplify. Move LIB_THREAD_LDFLAGS_SPEC ... (LINK_SPEC): ... here. 2011-07-13 Bernd Schmidt <bernds@codesourcery.com> @@ -448,8 +451,7 @@ 2011-07-13 H.J. Lu <hongjiu.lu@intel.com> - * config/i386/i386.c (x86_output_mi_thunk): Support ptr_mode - != Pmode. + * config/i386/i386.c (x86_output_mi_thunk): Support ptr_mode != Pmode. * config/i386/i386.md (*addsi_1_zext): Renamed to ... (addsi_1_zext): This. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 3187f856609..c2688997f4b 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -11149,8 +11149,13 @@ ix86_decompose_address (rtx addr, struct ix86_address *out) return 0; break; - case REG: case SUBREG: + /* Allow only subregs of DImode hard regs in PLUS chains. */ + if (!register_no_elim_operand (SUBREG_REG (op), DImode)) + return 0; + /* FALLTHRU */ + + case REG: if (!base) base = op; else if (!index) |