aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Li <davidxl@google.com>2011-06-01 17:42:39 +0000
committerXinliang David Li <davidxl@gcc.gnu.org>2011-06-01 17:42:39 +0000
commitea6cf778dd408c1f4a0a929f5b7b0896843250a1 (patch)
treebd47a6c1db5bf72c650753ad4f7238f47f6f6d3c /gcc
parenteeeb9b49bdae0cd4fe6bf4dc3bd75d401ae5c66d (diff)
downloadgcc-ea6cf778dd408c1f4a0a929f5b7b0896843250a1.zip
gcc-ea6cf778dd408c1f4a0a929f5b7b0896843250a1.tar.gz
gcc-ea6cf778dd408c1f4a0a929f5b7b0896843250a1.tar.bz2
Better function header dump
From-SVN: r174536
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/final.c16
-rw-r--r--gcc/passes.c17
-rw-r--r--gcc/tree-cfg.c7
-rw-r--r--gcc/tree-pretty-print.c36
-rw-r--r--gcc/tree-pretty-print.h1
6 files changed, 49 insertions, 35 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9b969a7..363c655 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2011-06-01 David Li <davidxl@google.com>
+
+ * tree-pretty-print.c (dump_function_header): New function.
+ * final.c (rest_of_clean_state): Use header dumper.
+ * tree-cfg.c (gimple_dump_cfg): Use header dumper.
+ * passes.c (pass_init_dump_file): Use header dumper.
+
2011-06-01 Jakub Jelinek <jakub@redhat.com>
* dwarf2out.c (compare_loc_descriptor, scompare_loc_descriptor,
diff --git a/gcc/final.c b/gcc/final.c
index 7e1ae90..af8047c 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -83,6 +83,7 @@ along with GCC; see the file COPYING3. If not see
#include "ggc.h"
#include "cfgloop.h"
#include "params.h"
+#include "tree-pretty-print.h"
#ifdef XCOFF_DEBUGGING_INFO
#include "xcoffout.h" /* Needed for external data
@@ -4360,20 +4361,7 @@ rest_of_clean_state (void)
}
else
{
- const char *aname;
- struct cgraph_node *node = cgraph_get_node (current_function_decl);
-
- aname = (IDENTIFIER_POINTER
- (DECL_ASSEMBLER_NAME (current_function_decl)));
- fprintf (final_output, "\n;; Function (%s) %s\n\n", aname,
- node->frequency == NODE_FREQUENCY_HOT
- ? " (hot)"
- : node->frequency == NODE_FREQUENCY_UNLIKELY_EXECUTED
- ? " (unlikely executed)"
- : node->frequency == NODE_FREQUENCY_EXECUTED_ONCE
- ? " (executed once)"
- : "");
-
+ dump_function_header (final_output, current_function_decl);
flag_dump_noaddr = flag_dump_unnumbered = 1;
if (flag_compare_debug_opt || flag_compare_debug)
dump_flags |= TDF_NOUID;
diff --git a/gcc/passes.c b/gcc/passes.c
index 4cfc4d3..d5189ca 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -74,6 +74,7 @@ along with GCC; see the file COPYING3. If not see
#include "lto-streamer.h"
#include "plugin.h"
#include "ipa-utils.h"
+#include "tree-pretty-print.h"
#if defined (DWARF2_UNWIND_INFO) || defined (DWARF2_DEBUGGING_INFO)
#include "dwarf2out.h"
@@ -1637,21 +1638,7 @@ pass_init_dump_file (struct opt_pass *pass)
dump_file_name = get_dump_file_name (pass->static_pass_number);
dump_file = dump_begin (pass->static_pass_number, &dump_flags);
if (dump_file && current_function_decl)
- {
- const char *dname, *aname;
- struct cgraph_node *node = cgraph_get_node (current_function_decl);
- dname = lang_hooks.decl_printable_name (current_function_decl, 2);
- aname = (IDENTIFIER_POINTER
- (DECL_ASSEMBLER_NAME (current_function_decl)));
- fprintf (dump_file, "\n;; Function %s (%s)%s\n\n", dname, aname,
- node->frequency == NODE_FREQUENCY_HOT
- ? " (hot)"
- : node->frequency == NODE_FREQUENCY_UNLIKELY_EXECUTED
- ? " (unlikely executed)"
- : node->frequency == NODE_FREQUENCY_EXECUTED_ONCE
- ? " (executed once)"
- : "");
- }
+ dump_function_header (dump_file, current_function_decl);
return initializing_dump;
}
else
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index f6b1710..5ba659c 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -2052,11 +2052,7 @@ gimple_dump_cfg (FILE *file, int flags)
{
if (flags & TDF_DETAILS)
{
- const char *funcname
- = lang_hooks.decl_printable_name (current_function_decl, 2);
-
- fputc ('\n', file);
- fprintf (file, ";; Function %s\n\n", funcname);
+ dump_function_header (file, current_function_decl);
fprintf (file, ";; \n%d basic blocks, %d edges, last basic block %d.\n\n",
n_basic_blocks, n_edges, last_basic_block);
@@ -7525,4 +7521,3 @@ struct gimple_opt_pass pass_warn_unused_result =
0, /* todo_flags_finish */
}
};
-
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c
index f2f5a22..f498819 100644
--- a/gcc/tree-pretty-print.c
+++ b/gcc/tree-pretty-print.c
@@ -3013,3 +3013,39 @@ pp_base_tree_identifier (pretty_printer *pp, tree id)
pp_append_text (pp, IDENTIFIER_POINTER (id),
IDENTIFIER_POINTER (id) + IDENTIFIER_LENGTH (id));
}
+
+/* A helper function that is used to dump function information before the
+ function dump. */
+
+void
+dump_function_header (FILE *dump_file, tree fdecl)
+{
+ const char *dname, *aname;
+ struct cgraph_node *node = cgraph_get_node (fdecl);
+ struct function *fun = DECL_STRUCT_FUNCTION (fdecl);
+
+ dname = lang_hooks.decl_printable_name (fdecl, 2);
+
+ if (DECL_ASSEMBLER_NAME_SET_P (fdecl))
+ aname = (IDENTIFIER_POINTER
+ (DECL_ASSEMBLER_NAME (fdecl)));
+ else
+ aname = "<unset-asm-name>";
+
+ if (node)
+ {
+ fprintf (dump_file, "\n;; Function %s (%s, funcdef_no=%d, decl_uid = %d, cgraph_uid=%d)",
+ dname, aname, fun->funcdef_no, DECL_UID(fdecl), node->uid);
+ fprintf (dump_file, "%s\n\n",
+ node->frequency == NODE_FREQUENCY_HOT
+ ? " (hot)"
+ : node->frequency == NODE_FREQUENCY_UNLIKELY_EXECUTED
+ ? " (unlikely executed)"
+ : node->frequency == NODE_FREQUENCY_EXECUTED_ONCE
+ ? " (executed once)"
+ : "");
+ }
+ else
+ fprintf (dump_file, "\n;; Function %s (%s, funcdef_no=%d, decl_uid = %d)",
+ dname, aname, fun->funcdef_no, DECL_UID(fdecl));
+}
diff --git a/gcc/tree-pretty-print.h b/gcc/tree-pretty-print.h
index 8346dc4..6075878 100644
--- a/gcc/tree-pretty-print.h
+++ b/gcc/tree-pretty-print.h
@@ -50,6 +50,7 @@ extern void debug_generic_expr (tree);
extern void debug_generic_stmt (tree);
extern void debug_tree_chain (tree);
extern void percent_K_format (text_info *);
+extern void dump_function_header (FILE *, tree);
/* In toplev.c */
extern bool default_tree_printer (pretty_printer *, text_info *, const char *,