reload1.c (reload_combine_note_store): Second argument is no longer unused/ignored.
authorJeffrey A Law <law@cygnus.com>
Wed, 10 Feb 1999 09:13:41 +0000 (09:13 +0000)
committerJeff Law <law@gcc.gnu.org>
Wed, 10 Feb 1999 09:13:41 +0000 (02:13 -0700)
        * reload1.c (reload_combine_note_store): Second argument is no
        longer unused/ignored.  Handle multi-register hard regs.
        (move2add_note_store): Simplify.

From-SVN: r25124

gcc/ChangeLog
gcc/reload1.c

index 58ad49094b75a2348876970374c249960cee0589..2c610829ebc25ad6d00bf42630f032f94f206d5a 100644 (file)
@@ -1,3 +1,9 @@
+Wed Feb 10 10:09:41 1999  Jeffrey A Law  (law@cygnus.com)
+
+       * reload1.c (reload_combine_note_store): Second argument is no
+       longer unused/ignored.  Handle multi-register hard regs.
+       (move2add_note_store): Simplify.
+
 Wed Feb 10 10:05:23 1999  Mumit Khan  <khan@xraylith.wisc.edu>
 
         * collect2.c (collect_execute): Remove cygwin-specific code.
index f2cb20deeaf919490caee85addc8150b63475d27..bfa25021ba482bd8a8e51daa3183911d229651c1 100644 (file)
@@ -9714,11 +9714,10 @@ reload_combine ()
 
 /* Check if DST is a register or a subreg of a register; if it is,
    update reg_state[regno].store_ruid and reg_state[regno].use_index
-   accordingly.  Called via note_stores from reload_combine.
-   The second argument, SET, is ignored.  */
+   accordingly.  Called via note_stores from reload_combine.  */
 static void
 reload_combine_note_store (dst, set)
-     rtx dst, set ATTRIBUTE_UNUSED;
+     rtx dst, set;
 {
   int regno = 0;
   int i;
@@ -9742,8 +9741,11 @@ reload_combine_note_store (dst, set)
       || GET_CODE (SET_DEST (set)) == SIGN_EXTRACT
       || GET_CODE (SET_DEST (set)) == STRICT_LOW_PART)
     {
-      reg_state[regno].use_index = -1;
-      reg_state[regno].store_ruid = reload_combine_ruid;
+      for (i = size / UNITS_PER_WORD - 1 + regno; i >= regno; i--)
+       {
+         reg_state[i].use_index = -1;
+         reg_state[i].store_ruid = reload_combine_ruid;
+       }
     }
   else
     {
@@ -10058,21 +10060,13 @@ move2add_note_store (dst, set)
 
   regno += REGNO (dst);
 
-  if (HARD_REGNO_NREGS (regno, mode) == 1 && GET_CODE (set) == SET)
+  if (HARD_REGNO_NREGS (regno, mode) == 1 && GET_CODE (set) == SET
+      && GET_CODE (SET_DEST (set)) != ZERO_EXTRACT
+      && GET_CODE (SET_DEST (set)) != SIGN_EXTRACT
+      && GET_CODE (SET_DEST (set)) != STRICT_LOW_PART)
     {
       rtx src = SET_SRC (set);
 
-      /* Indicate that this register has been recently written to,
-        but the exact contents are not available.  */
-      if (GET_CODE (SET_DEST (set)) == ZERO_EXTRACT
-         || GET_CODE (SET_DEST (set)) == SIGN_EXTRACT
-         || GET_CODE (SET_DEST (set)) == STRICT_LOW_PART)
-       {
-         reg_set_luid[regno] = move2add_luid;
-         reg_offset[regno] = dst;
-         return;
-       }
-
       reg_mode[regno] = mode;
       switch (GET_CODE (src))
        {