This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[lto] Add TDF_EH for emitting region numbers in statements
- From: Diego Novillo <dnovillo at google dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Wed, 22 Jul 2009 13:09:54 -0400
- Subject: [lto] Add TDF_EH for emitting region numbers in statements
I found this useful when debugging some libstdc++ failures
related to EH. I will apply it to mainline as well.
Tested on x86_64.
Diego.
* tree-pass.h (TDF_EH): Define.
* gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
contains TDF_EH, print the EH region number holding GS.
* tree-dump.c (dump_options): Add "eh".
* doc/invoke.texi: Document it.
Index: doc/invoke.texi
===================================================================
--- doc/invoke.texi (revision 149863)
+++ doc/invoke.texi (working copy)
@@ -5142,6 +5142,8 @@ Enable showing line numbers for statemen
Enable showing the unique ID (@code{DECL_UID}) for each variable.
@item verbose
Enable showing the tree dump for each statement.
+@item eh
+Enable showing the EH region number holding each statement.
@item all
Turn on all options, except @option{raw}, @option{slim}, @option{verbose}
and @option{lineno}.
Index: tree-dump.c
===================================================================
--- tree-dump.c (revision 149863)
+++ tree-dump.c (working copy)
@@ -816,6 +816,7 @@ static const struct dump_option_value_in
{"stmtaddr", TDF_STMTADDR},
{"memsyms", TDF_MEMSYMS},
{"verbose", TDF_VERBOSE},
+ {"eh", TDF_EH},
{"all", ~(TDF_RAW | TDF_SLIM | TDF_LINENO | TDF_TREE | TDF_RTL | TDF_IPA
| TDF_STMTADDR | TDF_GRAPH | TDF_DIAGNOSTIC | TDF_VERBOSE
| TDF_RHS_ONLY)},
Index: tree-pass.h
===================================================================
--- tree-pass.h (revision 149863)
+++ tree-pass.h (working copy)
@@ -76,6 +76,8 @@ enum tree_dump_index
#define TDF_RHS_ONLY (1 << 17) /* a flag to only print the RHS of
a gimple stmt. */
#define TDF_ASMNAME (1 << 18) /* display asm names of decls */
+#define TDF_EH (1 << 19) /* display EH region number
+ holding this gimple statement. */
/* In tree-dump.c */
Index: gimple-pretty-print.c
===================================================================
--- gimple-pretty-print.c (revision 149863)
+++ gimple-pretty-print.c (working copy)
@@ -1384,6 +1384,13 @@ dump_gimple_stmt (pretty_printer *buffer
pp_string (buffer, "] ");
}
+ if (flags & TDF_EH)
+ {
+ int eh_region = lookup_stmt_eh_region_fn (cfun, gs);
+ if (eh_region >= 0)
+ pp_printf (buffer, "[EH #%d] ", eh_region);
+ }
+
if ((flags & (TDF_VOPS|TDF_MEMSYMS))
&& gimple_has_mem_ops (gs))
dump_gimple_mem_ops (buffer, gs, spc, flags);