On Fri, 13 Mar 2015, Thomas Preud'homme wrote: > Hi, > > The description is longer than the patch so you might want to skip directly > to it. > > The dot file generated by -fdump-rtl-*-graph switches group basic blocks for > a given function together in a subgraph and use the function name as the > label. However, when generating an image (for instance a svg with "dot > -Tsvg") the label does not appear. This makes analyzing the resulting file > more difficult than it should be. > > The section "Subgraphs and clusters" of "The DOT language" document contains > the following excerpt: > > "The third role for subgraphs directly involves how the graph will be laid > out by certain layout engines. If the name of the subgraph begins with > cluster, Graphviz notes the subgraph as a special cluster subgraph. If > supported, the layout engine will do the layout so that the nodes belonging > to the cluster are drawn together, with the entire drawing of the cluster > contained within a bounding rectangle. Note that, for good and bad, cluster > subgraphs are not part of the DOT language, but solely a syntactic convention > adhered to by certain of the layout engines." > > Hence prepending cluster_ to subgraph id (not its label) would improve the > output image with many layout engines while no doing any difference for other > layout engines. The patch also make the subgraph boudary visible with dashed > lines and add "()" to the label of the subgraph (so for a function f the > label would be "f ()"). > > ChangeLog entry is as follows: > > *** gcc/ChangeLog *** > > 2015-03-10 Thomas Preud'homme <thomas.preudho...@arm.com> > > * graph.c (print_graph_cfg): Make function names visible and append > parenthesis to it. Also make groups of basic blocks belonging to the > same function visible. > > > diff --git a/gcc/graph.c b/gcc/graph.c > index a1eb24c..5fb0d78 100644 > --- a/gcc/graph.c > +++ b/gcc/graph.c > @@ -292,9 +292,10 @@ print_graph_cfg (const char *base, struct function *fun) > pretty_printer graph_slim_pp; > graph_slim_pp.buffer->stream = fp; > pretty_printer *const pp = &graph_slim_pp; > - pp_printf (pp, "subgraph \"%s\" {\n" > - "\tcolor=\"black\";\n" > - "\tlabel=\"%s\";\n", > + pp_printf (pp, "subgraph \"cluster_%s\" {\n" > + "\tstyle=\"dashed\";\n" > + "\tcolor=\"black\";\n" > + "\tlabel=\"%s ()\";\n", > funcname, funcname); > draw_cfg_nodes (pp, fun); > draw_cfg_edges (pp, fun); > > Is this ok for stage1? It's not a bug but it helps debuggability so is > this something we might consider backporting?
It's ok now given you bootstrapped the change. Thanks, Richard.