diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2011-07-18 19:51:33 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2011-07-18 19:51:33 +0200 |
commit | 031264128aa4d4fb489b687abcd980332da03e90 (patch) | |
tree | d3974797da01650d35b9530a06b0fcb14d63f6c0 | |
parent | fbf80ef7707cf65fa4ef9ba1ddda9e1bc93f3d6a (diff) | |
download | gcc-031264128aa4d4fb489b687abcd980332da03e90.zip gcc-031264128aa4d4fb489b687abcd980332da03e90.tar.gz gcc-031264128aa4d4fb489b687abcd980332da03e90.tar.bz2 |
re PR target/47744 ([x32] ICE: in reload_cse_simplify_operands, at postreload.c:403)
PR target/47744
* config/i386/i386.c (ix86_decompose_address): Allow only subregs
of DImode hard registers in PLUS address chains.
From-SVN: r176413
-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 faed53d..6597ecd 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 3187f85..c268899 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) |