diff options
-rw-r--r-- | ast.h | 3 | ||||
-rw-r--r-- | internal-tests.c | 4 | ||||
-rw-r--r-- | main.c | 28 |
3 files changed, 23 insertions, 12 deletions
@@ -1472,7 +1472,8 @@ void interpret (ast_t *ast); /* Driver */ ast_t * compile (const char *input, - gboolean do_optimize); + gboolean do_optimize, + gboolean debug_spew); /* Debug spew */ void dump_program (ast_program_t *program); diff --git a/internal-tests.c b/internal-tests.c index e91de00..b027fef 100644 --- a/internal-tests.c +++ b/internal-tests.c @@ -25,7 +25,7 @@ interp (const char *data) { ast_t *ast; - if ((ast = compile (data, TRUE))) + if ((ast = compile (data, TRUE, TRUE))) interpret (ast); } @@ -34,7 +34,7 @@ dump (const char *data) { ast_t *ast; - if ((ast = compile (data, TRUE))) + if ((ast = compile (data, TRUE, TRUE))) dump_program (&ast->program); } @@ -23,7 +23,7 @@ #include "ast.h" ast_t * -compile (const char *input, gboolean do_optimize) +compile (const char *input, gboolean do_optimize, gboolean debug_spew) { token_t *tokens; ast_t *ast; @@ -34,6 +34,9 @@ compile (const char *input, gboolean do_optimize) if (!(ast = parse (tokens))) return NULL; + if (debug_spew) + dump_program (&ast->program); + if (!prepare (ast)) return NULL; @@ -51,6 +54,9 @@ compile (const char *input, gboolean do_optimize) if (!graph (ast)) return NULL; + + if (debug_spew) + dump_graph (&ast->program); if (!init_check (ast)) return NULL; @@ -61,8 +67,17 @@ compile (const char *input, gboolean do_optimize) if (!levels (ast)) return NULL; - if (do_optimize && !optimize (ast)) - return NULL; + if (do_optimize) + { + if (!optimize (ast)) + return NULL; + + if (debug_spew) + { + g_print ("-=-=-=-=- Graph after optimization -=-=-=-=-=- \n"); + dump_graph (&ast->program); + } + } if (!offsets (ast)) return NULL; @@ -131,13 +146,8 @@ main (int argc, char **argv) { ast_t *ast; - if ((ast = compile (contents, optimize))) + if ((ast = compile (contents, optimize, debug_spew))) { - if (debug_spew) - { - dump_program (&ast->program); - dump_graph (&ast->program); - } interpret (ast); } } |