diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2009-11-25 05:00:08 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2009-11-25 05:00:08 +0000 |
commit | bfa00f485a2edd0071a78ddb0e9970a2a1f3b372 (patch) | |
tree | 6aa7bea622c1c47180461df05f081e8803a88cc5 /gcc/graphite-poly.c | |
parent | 3c7bdeb832a18ea64c7b1a66327dea3c438eac4b (diff) | |
download | gcc-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.c | 62 |
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 |