OSDN Git Service

* postreload.c (move2add_note_store): Add reg_symbol_ref[] checks
authorcltang <cltang@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Sep 2010 14:38:08 +0000 (14:38 +0000)
committercltang <cltang@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Sep 2010 14:38:08 +0000 (14:38 +0000)
to update conditions. Fix reg_mode[] check.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164524 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/postreload.c

index 4d1d88d..4baeaa9 100644 (file)
@@ -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
index dbc11bb..0a70b20 100644 (file)
@@ -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);