OSDN Git Service

Dump basic_block flags.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Jul 2011 22:14:36 +0000 (22:14 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Jul 2011 22:14:36 +0000 (22:14 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176537 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/cfg.c
gcc/cfgrtl.c

index 0451e1b..7e07cfd 100644 (file)
@@ -1,3 +1,8 @@
+2011-07-20  Richard Henderson  <rth@redhat.com>
+
+       * cfg.c (dump_bb_info): Dump basic_block->flags.
+       * cfgrtl.c (print_rtl_with_bb): Use dump_bb_info.
+
 2011-07-20  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.c (ix86_decompose_address): Allow only subregs
index 5b1dc26..00d1d5c 100644 (file)
--- a/gcc/cfg.c
+++ b/gcc/cfg.c
@@ -549,6 +549,26 @@ dump_bb_info (basic_block bb, bool header, bool footer, int flags,
        fputs (", maybe hot", file);
       if (cfun && probably_never_executed_bb_p (bb))
        fputs (", probably never executed", file);
+      if (bb->flags)
+       {
+         static const char * const bits[] = {
+           "new", "reachable", "irr_loop", "superblock", "disable_sched",
+           "hot_partition", "cold_partition", "duplicated",
+           "non_local_goto_target", "rtl", "forwarder", "nonthreadable",
+           "modified"
+         };
+         unsigned int flags;
+
+         fputs (", flags:", file);
+         for (flags = bb->flags; flags ; flags &= flags - 1)
+           {
+             unsigned i = ctz_hwi (flags);
+             if (i < ARRAY_SIZE (bits))
+               fprintf (file, " %s", bits[i]);
+             else
+               fprintf (file, " <%d>", i);
+           }
+       }
       fputs (".\n", file);
 
       fprintf (file, "%sPredecessors: ", prefix);
index 7eb4362..b8843ca 100644 (file)
@@ -1664,28 +1664,10 @@ print_rtl_with_bb (FILE *outf, const_rtx rtx_first)
       for (tmp_rtx = rtx_first; NULL != tmp_rtx; tmp_rtx = NEXT_INSN (tmp_rtx))
        {
          int did_output;
-         if ((bb = start[INSN_UID (tmp_rtx)]) != NULL)
-           {
-             edge e;
-             edge_iterator ei;
 
-             fprintf (outf, ";; Start of basic block (");
-             FOR_EACH_EDGE (e, ei, bb->preds)
-               fprintf (outf, " %d", e->src->index);
-             fprintf (outf, ") -> %d\n", bb->index);
-
-             if (df)
-               {
-                 df_dump_top (bb, outf);
-                 putc ('\n', outf);
-               }
-             FOR_EACH_EDGE (e, ei, bb->preds)
-               {
-                 fputs (";; Pred edge ", outf);
-                 dump_edge_info (outf, e, 0);
-                 fputc ('\n', outf);
-               }
-           }
+         bb = start[INSN_UID (tmp_rtx)];
+         if (bb != NULL)
+           dump_bb_info (bb, true, false, dump_flags, ";; ", outf);
 
          if (in_bb_p[INSN_UID (tmp_rtx)] == NOT_IN_BB
              && !NOTE_P (tmp_rtx)
@@ -1696,29 +1678,9 @@ print_rtl_with_bb (FILE *outf, const_rtx rtx_first)
 
          did_output = print_rtl_single (outf, tmp_rtx);
 
-         if ((bb = end[INSN_UID (tmp_rtx)]) != NULL)
-           {
-             edge e;
-             edge_iterator ei;
-
-             fprintf (outf, ";; End of basic block %d -> (", bb->index);
-             FOR_EACH_EDGE (e, ei, bb->succs)
-               fprintf (outf, " %d", e->dest->index);
-             fprintf (outf, ")\n");
-
-             if (df)
-               {
-                 df_dump_bottom (bb, outf);
-                 putc ('\n', outf);
-               }
-             putc ('\n', outf);
-             FOR_EACH_EDGE (e, ei, bb->succs)
-               {
-                 fputs (";; Succ edge ", outf);
-                 dump_edge_info (outf, e, 1);
-                 fputc ('\n', outf);
-               }
-           }
+         bb = end[INSN_UID (tmp_rtx)];
+         if (bb != NULL)
+           dump_bb_info (bb, false, true, dump_flags, ";; ", outf);
          if (did_output)
            putc ('\n', outf);
        }