From f3241b295c347abc45cb58023632c3599963ea2d Mon Sep 17 00:00:00 2001 From: Sebastian Pop Date: Fri, 17 Sep 2010 21:39:19 +0000 Subject: [PATCH] Add back dot_rdg. 2010-09-17 Sebastian Pop Revert commit: 2009-12-16 Ben Elliston * tree-data-ref.c (dot_rdg_1): Added back. (dot_rdg): Same. Added "#if 0" around system call. From-SVN: r164380 --- gcc/ChangeLog | 6 ++++ gcc/tree-data-ref.c | 70 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dcfc7e667835..ff81b02382cc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-09-17 Sebastian Pop + + Revert commit: 2009-12-16 Ben Elliston + * tree-data-ref.c (dot_rdg_1): Added back. + (dot_rdg): Same. Added "#if 0" around system call. + 2010-09-17 H.J. Lu Richard Henderson diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c index e1d2dfcadca5..06b36e9d4fe6 100644 --- a/gcc/tree-data-ref.c +++ b/gcc/tree-data-ref.c @@ -4709,6 +4709,76 @@ debug_rdg (struct graph *rdg) dump_rdg (stderr, rdg); } +static void +dot_rdg_1 (FILE *file, struct graph *rdg) +{ + int i; + + fprintf (file, "digraph RDG {\n"); + + for (i = 0; i < rdg->n_vertices; i++) + { + struct vertex *v = &(rdg->vertices[i]); + struct graph_edge *e; + + /* Highlight reads from memory. */ + if (RDG_MEM_READS_STMT (rdg, i)) + fprintf (file, "%d [style=filled, fillcolor=green]\n", i); + + /* Highlight stores to memory. */ + if (RDG_MEM_WRITE_STMT (rdg, i)) + fprintf (file, "%d [style=filled, fillcolor=red]\n", i); + + if (v->succ) + for (e = v->succ; e; e = e->succ_next) + switch (RDGE_TYPE (e)) + { + case input_dd: + fprintf (file, "%d -> %d [label=input] \n", i, e->dest); + break; + + case output_dd: + fprintf (file, "%d -> %d [label=output] \n", i, e->dest); + break; + + case flow_dd: + /* These are the most common dependences: don't print these. */ + fprintf (file, "%d -> %d \n", i, e->dest); + break; + + case anti_dd: + fprintf (file, "%d -> %d [label=anti] \n", i, e->dest); + break; + + default: + gcc_unreachable (); + } + } + + fprintf (file, "}\n\n"); +} + +/* Display the Reduced Dependence Graph using dotty. */ +extern void dot_rdg (struct graph *); + +DEBUG_FUNCTION void +dot_rdg (struct graph *rdg) +{ + /* When debugging, enable the following code. This cannot be used + in production compilers because it calls "system". */ +#if 0 + FILE *file = fopen ("/tmp/rdg.dot", "w"); + gcc_assert (file != NULL); + + dot_rdg_1 (file, rdg); + fclose (file); + + system ("dotty /tmp/rdg.dot &"); +#else + dot_rdg_1 (stderr, rdg); +#endif +} + /* This structure is used for recording the mapping statement index in the RDG. */