aboutsummaryrefslogtreecommitdiff
path: root/gcc/graphite-poly.c
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2009-11-25 05:00:08 +0000
committerSebastian Pop <spop@gcc.gnu.org>2009-11-25 05:00:08 +0000
commitbfa00f485a2edd0071a78ddb0e9970a2a1f3b372 (patch)
tree6aa7bea622c1c47180461df05f081e8803a88cc5 /gcc/graphite-poly.c
parent3c7bdeb832a18ea64c7b1a66327dea3c438eac4b (diff)
downloadgcc-bfa00f485a2edd0071a78ddb0e9970a2a1f3b372.zip
gcc-bfa00f485a2edd0071a78ddb0e9970a2a1f3b372.tar.gz
gcc-bfa00f485a2edd0071a78ddb0e9970a2a1f3b372.tar.bz2
graphite-poly.c (dot_lst_1): New.
2009-10-13 Sebastian Pop <sebastian.pop@amd.com> * graphite-poly.c (dot_lst_1): New. (dot_lst): New. * graphite-poly.h (dot_lst): Declared. From-SVN: r154573
Diffstat (limited to 'gcc/graphite-poly.c')
-rw-r--r--gcc/graphite-poly.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/gcc/graphite-poly.c b/gcc/graphite-poly.c
index d956ad4..659839d 100644
--- a/gcc/graphite-poly.c
+++ b/gcc/graphite-poly.c
@@ -906,5 +906,67 @@ debug_lst (lst_p lst)
print_lst (stderr, lst, 0);
}
+/* Pretty print to FILE the loop statement tree LST in DOT format. */
+
+static void
+dot_lst_1 (FILE *file, lst_p lst)
+{
+ if (!lst)
+ return;
+
+ if (LST_LOOP_P (lst))
+ {
+ int i;
+ lst_p l;
+
+ if (!LST_LOOP_FATHER (lst))
+ fprintf (file, "L -> L_%d_%d\n",
+ lst_depth (lst),
+ lst_dewey_number (lst));
+ else
+ fprintf (file, "L_%d_%d -> L_%d_%d\n",
+ lst_depth (LST_LOOP_FATHER (lst)),
+ lst_dewey_number (LST_LOOP_FATHER (lst)),
+ lst_depth (lst),
+ lst_dewey_number (lst));
+
+ for (i = 0; VEC_iterate (lst_p, LST_SEQ (lst), i, l); i++)
+ dot_lst_1 (file, l);
+ }
+
+ else
+ fprintf (file, "L_%d_%d -> S_%d\n",
+ lst_depth (LST_LOOP_FATHER (lst)),
+ lst_dewey_number (LST_LOOP_FATHER (lst)),
+ pbb_index (LST_PBB (lst)));
+
+}
+
+/* Display the LST using dotty. */
+
+void
+dot_lst (lst_p lst)
+{
+ /* When debugging, enable the following code. This cannot be used
+ in production compilers because it calls "system". */
+#if 0
+ int x;
+ FILE *stream = fopen ("/tmp/lst.dot", "w");
+ gcc_assert (stream);
+
+ fputs ("digraph all {\n", stream);
+ dot_lst_1 (stream, lst);
+ fputs ("}\n\n", stream);
+ fclose (stream);
+
+ x = system ("dotty /tmp/lst.dot");
+#else
+ fputs ("digraph all {\n", stderr);
+ dot_lst_1 (stderr, lst);
+ fputs ("}\n\n", stderr);
+
+#endif
+}
+
#endif