aboutsummaryrefslogtreecommitdiff
path: root/gcc/postreload.c
diff options
context:
space:
mode:
authorChung-Lin Tang <cltang@codesourcery.com>2010-09-22 14:38:08 +0000
committerChung-Lin Tang <cltang@gcc.gnu.org>2010-09-22 14:38:08 +0000
commit27d5e204ca7d3fa62230529cad888df0d866a10f (patch)
tree992b9da327f6da124975eb5bb2f13fedd261c80d /gcc/postreload.c
parentbe6388e18adadc4c47d79cf8cdcc5b6c9b0afd1f (diff)
downloadgcc-27d5e204ca7d3fa62230529cad888df0d866a10f.zip
gcc-27d5e204ca7d3fa62230529cad888df0d866a10f.tar.gz
gcc-27d5e204ca7d3fa62230529cad888df0d866a10f.tar.bz2
postreload.c (move2add_note_store): Add reg_symbol_ref[] checks to update conditions.
* postreload.c (move2add_note_store): Add reg_symbol_ref[] checks to update conditions. Fix reg_mode[] check. From-SVN: r164524
Diffstat (limited to 'gcc/postreload.c')
-rw-r--r--gcc/postreload.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/postreload.c b/gcc/postreload.c
index dbc11bb..0a70b20 100644
--- a/gcc/postreload.c
+++ b/gcc/postreload.c
@@ -2104,15 +2104,17 @@ move2add_note_store (rtx dst, const_rtx set, void *data)
&& (MODES_OK_FOR_MOVE2ADD
(dst_mode, reg_mode[REGNO (XEXP (src, 1))])))
{
- if (reg_base_reg[REGNO (XEXP (src, 1))] < 0)
+ if (reg_base_reg[REGNO (XEXP (src, 1))] < 0
+ && reg_symbol_ref[REGNO (XEXP (src, 1))] == NULL_RTX)
offset = reg_offset[REGNO (XEXP (src, 1))];
/* Maybe the first register is known to be a
constant. */
else if (reg_set_luid[REGNO (base_reg)]
> move2add_last_label_luid
&& (MODES_OK_FOR_MOVE2ADD
- (dst_mode, reg_mode[REGNO (XEXP (src, 1))]))
- && reg_base_reg[REGNO (base_reg)] < 0)
+ (dst_mode, reg_mode[REGNO (base_reg)]))
+ && reg_base_reg[REGNO (base_reg)] < 0
+ && reg_symbol_ref[REGNO (base_reg)] == NULL_RTX)
{
offset = reg_offset[REGNO (base_reg)];
base_reg = XEXP (src, 1);