aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2011-07-18 19:51:33 +0200
committerUros Bizjak <uros@gcc.gnu.org>2011-07-18 19:51:33 +0200
commit031264128aa4d4fb489b687abcd980332da03e90 (patch)
treed3974797da01650d35b9530a06b0fcb14d63f6c0
parentfbf80ef7707cf65fa4ef9ba1ddda9e1bc93f3d6a (diff)
downloadgcc-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/ChangeLog22
-rw-r--r--gcc/config/i386/i386.c7
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)