aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2011-07-20 15:14:36 -0700
committerRichard Henderson <rth@gcc.gnu.org>2011-07-20 15:14:36 -0700
commit510a442a352a425d86dcd0995ceafd7a4e5dd3db (patch)
tree12e5ece87d8bf4aec813974464481c9479dc8ed6 /gcc
parent00b40d0da26a32c18f696c8f301b51f55960d155 (diff)
downloadgcc-510a442a352a425d86dcd0995ceafd7a4e5dd3db.zip
gcc-510a442a352a425d86dcd0995ceafd7a4e5dd3db.tar.gz
gcc-510a442a352a425d86dcd0995ceafd7a4e5dd3db.tar.bz2
Dump basic_block flags.
From-SVN: r176537
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cfg.c20
-rw-r--r--gcc/cfgrtl.c50
3 files changed, 31 insertions, 44 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0451e1b..7e07cfd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/cfg.c b/gcc/cfg.c
index 5b1dc26..00d1d5cb 100644
--- 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);
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index 7eb4362..b8843cae 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -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);
}