Display profile info in graph cfg dump
authorXinliang David Li <davidxl@google.com>
Tue, 23 Apr 2013 00:14:38 +0000 (00:14 +0000)
committerXinliang David Li <davidxl@gcc.gnu.org>
Tue, 23 Apr 2013 00:14:38 +0000 (00:14 +0000)
From-SVN: r198165

gcc/ChangeLog
gcc/Makefile.in
gcc/cfghooks.c
gcc/graph.c

index 3c52f53d13161408d3a143fd65faf447e57f7467..3ea7fa7654f16dc9645440a101ca40d7ce511fe3 100644 (file)
@@ -1,3 +1,9 @@
+2013-04-22  Xinliang David Li  <davidxl@google.com>
+
+       * 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  <clm@codesourcery.com>
             David Daney <ddaney.cavm@gmail.com>
 
index a91224bae519eb4c8486908088765991d9dbf64e..e265730ec937ab7c75bc782c89d055bc6266eefa 100644 (file)
@@ -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) \
index 5354624d91c3727355529ce300000bf595350ba1..6832aabff9e2d7780a64a532d1efceeb8a140522 100644 (file)
@@ -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);
 }
 
index 1ecfdf0b76126606b769c9a3b8835346b5a4b55b..6aebb22afff1e90f355623920d502101b8d11b20 100644 (file)
@@ -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);
 }