diff options
author | Chung-Lin Tang <cltang@codesourcery.com> | 2010-09-22 14:38:08 +0000 |
---|---|---|
committer | Chung-Lin Tang <cltang@gcc.gnu.org> | 2010-09-22 14:38:08 +0000 |
commit | 27d5e204ca7d3fa62230529cad888df0d866a10f (patch) | |
tree | 992b9da327f6da124975eb5bb2f13fedd261c80d | |
parent | be6388e18adadc4c47d79cf8cdcc5b6c9b0afd1f (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/postreload.c | 8 |
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4d1d88d..4baeaa9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-09-22 Chung-Lin Tang <cltang@codesourcery.com> + + * postreload.c (move2add_note_store): Add reg_symbol_ref[] checks + to update conditions. Fix reg_mode[] check. + 2010-09-22 Hariharan Sandanagobalane <hariharan@picochip.com> * config/picochip/picochip.md (movhicc): Use expand to check whether 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); |