diff options
-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); |