[committed] Reinstate dump_generic_expr_loc

Message ID 1530505650-25947-1-git-send-email-dmalcolm@redhat.com
State New
Headers show
Series
  • [committed] Reinstate dump_generic_expr_loc
Related show

Commit Message

David Malcolm July 2, 2018, 4:27 a.m.
In r262149 ("Introduce dump_location_t", aka
c309657f69df19eaa590b6650acf4d3bea9ac9e6), I removed dump_generic_expr_loc
from dumpfile.h/c as it was unused in the source tree.

It looks like this was overzealous of me, as Richard wants to use it in
  "Re: [14/n] PR85694: Rework overwidening detection"
    https://gcc.gnu.org/ml/gcc-patches/2018-06/msg01872.html
(which also reinstates the function, porting it to dump_location_t).

Sorry about the breakage.

This is a minimal patch to reinstate it, as I have followup patches to
dumpfile.c which need to touch it (and the other dump_* functions),
towards being able to save optimization records to a file.

I believe it's a subset of Richard's patch above.

Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu.

Committed to trunk as r262295 under the "obvious" rule.

gcc/ChangeLog:
	* dumpfile.c (dump_generic_expr_loc): Undo removal of this
	function in r262149, changing "loc" param from source_location to
	const dump_location_t &.
	* dumpfile.h (dump_generic_expr_loc): Undo removal of this
	declaration, as above.
---
 gcc/dumpfile.c | 22 ++++++++++++++++++++++
 gcc/dumpfile.h |  2 ++
 2 files changed, 24 insertions(+)

-- 
1.8.5.3

Patch

diff --git a/gcc/dumpfile.c b/gcc/dumpfile.c
index 93bc651..5f69f9b 100644
--- a/gcc/dumpfile.c
+++ b/gcc/dumpfile.c
@@ -506,6 +506,28 @@  dump_generic_expr (dump_flags_t dump_kind, dump_flags_t extra_dump_flags,
       print_generic_expr (alt_dump_file, t, dump_flags | extra_dump_flags);
 }
 
+
+/* Similar to dump_generic_expr, except additionally print the source
+   location.  */
+
+void
+dump_generic_expr_loc (dump_flags_t dump_kind, const dump_location_t &loc,
+		       dump_flags_t extra_dump_flags, tree t)
+{
+  location_t srcloc = loc.get_location_t ();
+  if (dump_file && (dump_kind & pflags))
+    {
+      dump_loc (dump_kind, dump_file, srcloc);
+      print_generic_expr (dump_file, t, dump_flags | extra_dump_flags);
+    }
+
+  if (alt_dump_file && (dump_kind & alt_flags))
+    {
+      dump_loc (dump_kind, alt_dump_file, srcloc);
+      print_generic_expr (alt_dump_file, t, dump_flags | extra_dump_flags);
+    }
+}
+
 /* Output a formatted message using FORMAT on appropriate dump streams.  */
 
 void
diff --git a/gcc/dumpfile.h b/gcc/dumpfile.h
index 9828a3f..0e588a6 100644
--- a/gcc/dumpfile.h
+++ b/gcc/dumpfile.h
@@ -425,6 +425,8 @@  extern void dump_printf_loc (dump_flags_t, const dump_location_t &,
 			     const char *, ...) ATTRIBUTE_PRINTF_3;
 extern void dump_function (int phase, tree fn);
 extern void dump_basic_block (dump_flags_t, basic_block, int);
+extern void dump_generic_expr_loc (dump_flags_t, const dump_location_t &,
+				   dump_flags_t, tree);
 extern void dump_generic_expr (dump_flags_t, dump_flags_t, tree);
 extern void dump_gimple_stmt_loc (dump_flags_t, const dump_location_t &,
 				  dump_flags_t, gimple *, int);