OSDN Git Service

PR debug/43478
[pf3gnuchains/gcc-fork.git] / gcc / df-problems.c
index 25bbba6..5f908da 100644 (file)
@@ -1,6 +1,6 @@
 /* Standard problems for dataflow support routines.
    Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-   2008, 2009, 2010 Free Software Foundation, Inc.
+   2008, 2009 Free Software Foundation, Inc.
    Originally contributed by Michael P. Hayes
              (m.hayes@elec.canterbury.ac.nz, mhayes@redhat.com)
    Major rewrite contributed by Danny Berlin (dberlin@dberlin.org)
@@ -3416,7 +3416,6 @@ struct dead_debug
 {
   struct dead_debug_use *head;
   bitmap used;
-  bitmap to_rescan;
 };
 
 /* Initialize DEBUG to an empty list, and clear USED, if given.  */
@@ -3425,7 +3424,6 @@ dead_debug_init (struct dead_debug *debug, bitmap used)
 {
   debug->head = NULL;
   debug->used = used;
-  debug->to_rescan = NULL;
   if (used)
     bitmap_clear (used);
 }
@@ -3449,26 +3447,10 @@ dead_debug_finish (struct dead_debug *debug, bitmap used)
        {
          INSN_VAR_LOCATION_LOC (insn) = gen_rtx_UNKNOWN_VAR_LOC ();
          df_insn_rescan_debug_internal (insn);
-         if (debug->to_rescan)
-           bitmap_clear_bit (debug->to_rescan, INSN_UID (insn));
        }
       debug->head = head->next;
       XDELETE (head);
     }
-
-  if (debug->to_rescan)
-    {
-      bitmap_iterator bi;
-      unsigned int uid;
-
-      EXECUTE_IF_SET_IN_BITMAP (debug->to_rescan, 0, uid, bi)
-       {
-         struct df_insn_info *insn_info = DF_INSN_UID_SAFE_GET (uid);
-         if (insn_info)
-           df_insn_rescan (insn_info->insn);
-       }
-      BITMAP_FREE (debug->to_rescan);
-    }
 }
 
 /* Add USE to DEBUG.  It must be a dead reference to UREGNO in a debug
@@ -3519,8 +3501,8 @@ dead_debug_insert_before (struct dead_debug *debug, unsigned int uregno,
          cur->next = NULL;
          if (!reg
              || (GET_MODE_BITSIZE (GET_MODE (reg))
-                 < GET_MODE_BITSIZE (GET_MODE (*DF_REF_REAL_LOC (cur->use)))))
-           reg = *DF_REF_REAL_LOC (cur->use);
+                 < GET_MODE_BITSIZE (GET_MODE (DF_REF_REAL_REG (cur->use)))))
+           reg = DF_REF_REAL_REG (cur->use);
        }
       else
        tailp = &(*tailp)->next;
@@ -3542,15 +3524,13 @@ dead_debug_insert_before (struct dead_debug *debug, unsigned int uregno,
   /* Adjust all uses.  */
   while ((cur = uses))
     {
-      if (GET_MODE (*DF_REF_REAL_LOC (cur->use)) == GET_MODE (reg))
+      if (GET_MODE (DF_REF_REAL_REG (cur->use)) == GET_MODE (reg))
        *DF_REF_REAL_LOC (cur->use) = dval;
       else
        *DF_REF_REAL_LOC (cur->use)
-         = gen_lowpart_SUBREG (GET_MODE (*DF_REF_REAL_LOC (cur->use)), dval);
+         = gen_lowpart_SUBREG (GET_MODE (DF_REF_REAL_REG (cur->use)), dval);
       /* ??? Should we simplify subreg of subreg?  */
-      if (debug->to_rescan == NULL)
-       debug->to_rescan = BITMAP_ALLOC (NULL);
-      bitmap_set_bit (debug->to_rescan, INSN_UID (DF_REF_INSN (cur->use)));
+      df_insn_rescan (DF_REF_INSN (cur->use));
       uses = cur->next;
       XDELETE (cur);
     }
@@ -3748,10 +3728,7 @@ df_note_bb_compute (unsigned int bb_index,
              if (debug_insn)
                {
                  if (debug_insn > 0)
-                   {
-                     dead_debug_add (&debug, use, uregno);
-                     continue;
-                   }
+                   dead_debug_add (&debug, use, uregno);
                  break;
                }
              else