From 5d24e2d17001c97620dc80f182fac948b6d1afdd Mon Sep 17 00:00:00 2001 From: davidxl Date: Tue, 23 Apr 2013 00:14:38 +0000 Subject: [PATCH] Display profile info in graph cfg dump git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198165 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/Makefile.in | 2 +- gcc/cfghooks.c | 5 +++++ gcc/graph.c | 5 +++-- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3c52f53d131..3ea7fa7654f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-04-22 Xinliang David Li + + * graph.c (draw_cfg_node_succ_edges): Add branch probility as label. + * cfghhooks.c (dump_bb_for_graph): Dump profile count and frquency. + * Makefile.in: New dependency + 2013-04-22 Catherine Moore David Daney diff --git a/gcc/Makefile.in b/gcc/Makefile.in index a91224bae51..e265730ec93 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -3123,7 +3123,7 @@ cfg.o : cfg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(DUMPFILE_H) \ $(GGC_H) $(OBSTACK_H) alloc-pool.h $(HASH_TABLE_H) $(CFGLOOP_H) $(TREE_H) \ $(BASIC_BLOCK_H) cfghooks.o: cfghooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ - $(TREE_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) $(TIMEVAR_H) toplev.h $(DIAGNOSTIC_CORE_H) $(CFGLOOP_H) + $(TREE_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) $(TIMEVAR_H) toplev.h $(DIAGNOSTIC_CORE_H) $(CFGLOOP_H) $(PRETTY_PRINT_H) cfgexpand.o : cfgexpand.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(FUNCTION_H) $(TM_H) \ coretypes.h $(EXCEPT_H) langhooks.h $(TREE_PASS_H) $(RTL_H) \ diff --git a/gcc/cfghooks.c b/gcc/cfghooks.c index 5354624d91c..6832aabff9e 100644 --- a/gcc/cfghooks.c +++ b/gcc/cfghooks.c @@ -30,6 +30,7 @@ along with GCC; see the file COPYING3. If not see #include "timevar.h" #include "diagnostic-core.h" #include "cfgloop.h" +#include "pretty-print.h" /* A pointer to one of the hooks containers. */ static struct cfg_hooks *cfg_hooks; @@ -308,6 +309,10 @@ dump_bb_for_graph (pretty_printer *pp, basic_block bb) if (!cfg_hooks->dump_bb_for_graph) internal_error ("%s does not support dump_bb_for_graph", cfg_hooks->name); + if (bb->count) + pp_printf (pp, "COUNT:" HOST_WIDEST_INT_PRINT_DEC, bb->count); + pp_printf (pp, " FREQ:%i |", bb->frequency); + pp_write_text_to_stream (pp); cfg_hooks->dump_bb_for_graph (pp, bb); } diff --git a/gcc/graph.c b/gcc/graph.c index 1ecfdf0b761..6aebb22afff 100644 --- a/gcc/graph.c +++ b/gcc/graph.c @@ -155,11 +155,12 @@ draw_cfg_node_succ_edges (pretty_printer *pp, int funcdef_no, basic_block bb) pp_printf (pp, "\tfn_%d_basic_block_%d:s -> fn_%d_basic_block_%d:n " - "[style=%s,color=%s,weight=%d,constraint=%s];\n", + "[style=%s,color=%s,weight=%d,constraint=%s, label=\"[%i%%]\"];\n", funcdef_no, e->src->index, funcdef_no, e->dest->index, style, color, weight, - (e->flags & (EDGE_FAKE | EDGE_DFS_BACK)) ? "false" : "true"); + (e->flags & (EDGE_FAKE | EDGE_DFS_BACK)) ? "false" : "true", + e->probability * 100 / REG_BR_PROB_BASE); } pp_flush (pp); } -- 2.11.4.GIT