Patchwork Simple change in dot dumper -- Display profile count and branch probability

login
register
mail settings
Submitter Xinliang David Li
Date April 21, 2013, 6:37 a.m.
Message ID <CAAkRFZJqZMOm7YWvfovKBMnENAJf9-nSg=zW68MDN1CgC1g41Q@mail.gmail.com>
Download mbox | patch
Permalink /patch/238199/
State New
Headers show

Comments

Xinliang David Li - April 21, 2013, 6:37 a.m.
Thanks.   The patch is revised.

David

2013-04-20  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.

    $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(FUNCTION_H) $(TM_H) \
    coretypes.h $(EXCEPT_H) langhooks.h $(TREE_PASS_H) $(RTL_H) \

On Sat, Apr 20, 2013 at 4:02 PM, Steven Bosscher <stevenb.gcc@gmail.com> wrote:
> On Sun, Apr 21, 2013 at 12:47 AM, Xinliang David Li wrote:
>> Index: graph.c
>> ===================================================================
>> --- graph.c     (revision 198108)
>> +++ graph.c     (working copy)
>> @@ -110,6 +110,9 @@ draw_cfg_node (pretty_printer *pp, int f
>>    else
>>      {
>>        pp_character (pp, '{');
>> +      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);
>>        dump_bb_for_graph (pp, bb);
>>        pp_character (pp, '}');
>
> This doesn't belong here, please put it in cfghooks.c:dump_bb_for_graph.
>
> Otherwise, looks good me.
>
> Ciao!
> Steven
Diego Novillo - April 22, 2013, 7:23 p.m.
On 2013-04-21 02:37 , Xinliang David Li wrote:
>          * 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.

Looks OK.


Diego.

Patch

Index: cfghooks.c
===================================================================
--- cfghooks.c  (revision 198108)
+++ cfghooks.c  (working copy)
@@ -30,6 +30,7 @@  along with GCC; see the file COPYING3.
 #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, b
   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: graph.c
===================================================================
--- graph.c     (revision 198108)
+++ graph.c     (working copy)
@@ -155,11 +155,12 @@  draw_cfg_node_succ_edges (pretty_printer

       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);
 }
Index: Makefile.in
===================================================================
--- Makefile.in (revision 198108)
+++ Makefile.in (working copy)
@@ -3123,7 +3123,7 @@  cfg.o : cfg.c $(CONFIG_H) $(SYSTEM_H) co
    $(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) \