From 27d5e204ca7d3fa62230529cad888df0d866a10f Mon Sep 17 00:00:00 2001 From: Chung-Lin Tang Date: Wed, 22 Sep 2010 14:38:08 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/postreload.c | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4d1d88dcbcb4..4baeaa90535c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-09-22 Chung-Lin Tang + + * postreload.c (move2add_note_store): Add reg_symbol_ref[] checks + to update conditions. Fix reg_mode[] check. + 2010-09-22 Hariharan Sandanagobalane * config/picochip/picochip.md (movhicc): Use expand to check whether diff --git a/gcc/postreload.c b/gcc/postreload.c index dbc11bb18746..0a70b2031a54 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);