From ea6cf778dd408c1f4a0a929f5b7b0896843250a1 Mon Sep 17 00:00:00 2001 From: David Li Date: Wed, 1 Jun 2011 17:42:39 +0000 Subject: [PATCH] Better function header dump From-SVN: r174536 --- gcc/ChangeLog | 7 +++++++ gcc/final.c | 16 ++-------------- gcc/passes.c | 17 ++--------------- gcc/tree-cfg.c | 7 +------ gcc/tree-pretty-print.c | 36 ++++++++++++++++++++++++++++++++++++ gcc/tree-pretty-print.h | 1 + 6 files changed, 49 insertions(+), 35 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9b969a76bf5..363c655a73a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2011-06-01 David Li + + * 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 * dwarf2out.c (compare_loc_descriptor, scompare_loc_descriptor, diff --git a/gcc/final.c b/gcc/final.c index 7e1ae902477..af8047c1608 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 4cfc4d37ee6..d5189ca17d2 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 f6b171024bd..5ba659c2b0b 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 f2f5a220018..f4988197225 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 = ""; + + 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 8346dc4e48f..60758789f15 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 *, -- 2.30.2