aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-data-ref.c
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2010-09-17 21:39:19 +0000
committerSebastian Pop <spop@gcc.gnu.org>2010-09-17 21:39:19 +0000
commitf3241b295c347abc45cb58023632c3599963ea2d (patch)
treeb55bcd09b371304fb72c2035a5701b7933192228 /gcc/tree-data-ref.c
parente7ed95a24d005410ee3fb772c97189f43dadaee7 (diff)
downloadgcc-f3241b295c347abc45cb58023632c3599963ea2d.zip
gcc-f3241b295c347abc45cb58023632c3599963ea2d.tar.gz
gcc-f3241b295c347abc45cb58023632c3599963ea2d.tar.bz2
Add back dot_rdg.
2010-09-17 Sebastian Pop <sebastian.pop@amd.com> Revert commit: 2009-12-16 Ben Elliston <bje@au.ibm.com> * tree-data-ref.c (dot_rdg_1): Added back. (dot_rdg): Same. Added "#if 0" around system call. From-SVN: r164380
Diffstat (limited to 'gcc/tree-data-ref.c')
-rw-r--r--gcc/tree-data-ref.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c
index e1d2dfc..06b36e9d 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. */