OSDN Git Service

2010-04-20 Richard Guenther <rguenther@suse.de>
[pf3gnuchains/gcc-fork.git] / gcc / ira-conflicts.c
index 58fa4ad..70100ac 100644 (file)
@@ -684,68 +684,72 @@ print_hard_reg_set (FILE *file, const char *title, HARD_REG_SET set)
   putc ('\n', file);
 }
 
-/* Print information about allocno or only regno (if REG_P) conflicts
-   to FILE.  */
 static void
-print_conflicts (FILE *file, bool reg_p)
+print_allocno_conflicts (FILE * file, bool reg_p, ira_allocno_t a)
 {
-  ira_allocno_t a;
-  ira_allocno_iterator ai;
   HARD_REG_SET conflicting_hard_regs;
+  ira_allocno_t conflict_a;
+  ira_allocno_conflict_iterator aci;
+  basic_block bb;
 
-  FOR_EACH_ALLOCNO (a, ai)
+  if (reg_p)
+    fprintf (file, ";; r%d", ALLOCNO_REGNO (a));
+  else
     {
-      ira_allocno_t conflict_a;
-      ira_allocno_conflict_iterator aci;
-      basic_block bb;
-
-      if (reg_p)
-       fprintf (file, ";; r%d", ALLOCNO_REGNO (a));
+      fprintf (file, ";; a%d(r%d,", ALLOCNO_NUM (a), ALLOCNO_REGNO (a));
+      if ((bb = ALLOCNO_LOOP_TREE_NODE (a)->bb) != NULL)
+        fprintf (file, "b%d", bb->index);
       else
-       {
-         fprintf (file, ";; a%d(r%d,", ALLOCNO_NUM (a), ALLOCNO_REGNO (a));
-         if ((bb = ALLOCNO_LOOP_TREE_NODE (a)->bb) != NULL)
-           fprintf (file, "b%d", bb->index);
-         else
-           fprintf (file, "l%d", ALLOCNO_LOOP_TREE_NODE (a)->loop->num);
-         putc (')', file);
-       }
-      fputs (" conflicts:", file);
-      if (ALLOCNO_CONFLICT_ALLOCNO_ARRAY (a) != NULL)
-       FOR_EACH_ALLOCNO_CONFLICT (a, conflict_a, aci)
-         {
-           if (reg_p)
-             fprintf (file, " r%d,", ALLOCNO_REGNO (conflict_a));
+        fprintf (file, "l%d", ALLOCNO_LOOP_TREE_NODE (a)->loop->num);
+      putc (')', file);
+    }
+  fputs (" conflicts:", file);
+  if (ALLOCNO_CONFLICT_ALLOCNO_ARRAY (a) != NULL)
+    FOR_EACH_ALLOCNO_CONFLICT (a, conflict_a, aci)
+      {
+        if (reg_p)
+          fprintf (file, " r%d,", ALLOCNO_REGNO (conflict_a));
+        else
+          {
+           fprintf (file, " a%d(r%d,", ALLOCNO_NUM (conflict_a),
+                    ALLOCNO_REGNO (conflict_a));
+           if ((bb = ALLOCNO_LOOP_TREE_NODE (conflict_a)->bb) != NULL)
+             fprintf (file, "b%d)", bb->index);
            else
-             {
-               fprintf (file, " a%d(r%d,", ALLOCNO_NUM (conflict_a),
-                        ALLOCNO_REGNO (conflict_a));
-               if ((bb = ALLOCNO_LOOP_TREE_NODE (conflict_a)->bb) != NULL)
-                 fprintf (file, "b%d)", bb->index);
-               else
-                 fprintf (file, "l%d)",
-                          ALLOCNO_LOOP_TREE_NODE (conflict_a)->loop->num);
-             }
+             fprintf (file, "l%d)",
+                      ALLOCNO_LOOP_TREE_NODE (conflict_a)->loop->num);
          }
-      COPY_HARD_REG_SET (conflicting_hard_regs,
-                        ALLOCNO_TOTAL_CONFLICT_HARD_REGS (a));
-      AND_COMPL_HARD_REG_SET (conflicting_hard_regs, ira_no_alloc_regs);
-      AND_HARD_REG_SET (conflicting_hard_regs,
-                       reg_class_contents[ALLOCNO_COVER_CLASS (a)]);
-      print_hard_reg_set (file, "\n;;     total conflict hard regs:",
-                         conflicting_hard_regs);
-      COPY_HARD_REG_SET (conflicting_hard_regs,
-                        ALLOCNO_CONFLICT_HARD_REGS (a));
-      AND_COMPL_HARD_REG_SET (conflicting_hard_regs, ira_no_alloc_regs);
-      AND_HARD_REG_SET (conflicting_hard_regs,
-                       reg_class_contents[ALLOCNO_COVER_CLASS (a)]);
-      print_hard_reg_set (file, ";;     conflict hard regs:",
-                         conflicting_hard_regs);
-    }
+      }
+  COPY_HARD_REG_SET (conflicting_hard_regs,
+                    ALLOCNO_TOTAL_CONFLICT_HARD_REGS (a));
+  AND_COMPL_HARD_REG_SET (conflicting_hard_regs, ira_no_alloc_regs);
+  AND_HARD_REG_SET (conflicting_hard_regs,
+                   reg_class_contents[ALLOCNO_COVER_CLASS (a)]);
+  print_hard_reg_set (file, "\n;;     total conflict hard regs:",
+                     conflicting_hard_regs);
+  COPY_HARD_REG_SET (conflicting_hard_regs,
+                    ALLOCNO_CONFLICT_HARD_REGS (a));
+  AND_COMPL_HARD_REG_SET (conflicting_hard_regs, ira_no_alloc_regs);
+  AND_HARD_REG_SET (conflicting_hard_regs,
+                   reg_class_contents[ALLOCNO_COVER_CLASS (a)]);
+  print_hard_reg_set (file, ";;     conflict hard regs:",
+                     conflicting_hard_regs);
   putc ('\n', file);
 }
 
 /* Print information about allocno or only regno (if REG_P) conflicts
+   to FILE.  */
+static void
+print_conflicts (FILE *file, bool reg_p)
+{
+  ira_allocno_t a;
+  ira_allocno_iterator ai;
+
+  FOR_EACH_ALLOCNO (a, ai)
+    print_allocno_conflicts (file, reg_p, a);
+}
+
+/* Print information about allocno or only regno (if REG_P) conflicts
    to stderr.  */
 void
 ira_debug_conflicts (bool reg_p)