This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]