Committed to dmalcolm/jit: gcc/jit/ * internal-api.c (gcc::jit::context::compile): Correctly cleanup timevars in error-handling, preventing an issue where an error on a context left timevar.c in an unstopped state, leading to an assertion failure when restarting timevars in the next compile. Found via fuzz-testing. --- gcc/jit/ChangeLog.jit | 8 ++++++++ gcc/jit/internal-api.c | 13 +++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/gcc/jit/ChangeLog.jit b/gcc/jit/ChangeLog.jit index adf273b..2cf5c8d 100644 --- a/gcc/jit/ChangeLog.jit +++ b/gcc/jit/ChangeLog.jit @@ -1,5 +1,13 @@ 2013-10-21 David Malcolm <dmalc...@redhat.com> + * internal-api.c (gcc::jit::context::compile): Correctly cleanup + timevars in error-handling, preventing an issue where an error + on a context left timevar.c in an unstopped state, leading to an + assertion failure when restarting timevars in the next compile. + Found via fuzz-testing. + +2013-10-21 David Malcolm <dmalc...@redhat.com> + * internal-api.c (gcc::jit::context::postprocess): Show source line numbers (if any) in gimple dump. diff --git a/gcc/jit/internal-api.c b/gcc/jit/internal-api.c index 8bb6741..d90f001 100644 --- a/gcc/jit/internal-api.c +++ b/gcc/jit/internal-api.c @@ -1261,7 +1261,11 @@ compile () active_jit_ctxt = NULL; if (errors_occurred ()) - goto error; + { + timevar_stop (TV_TOTAL); + timevar_print (stderr); + goto error; + } timevar_push (TV_ASSEMBLE); @@ -1279,7 +1283,12 @@ compile () printf ("cmd: %s\n", cmd); int ret = system (cmd); if (ret) - goto error; + { + timevar_pop (TV_ASSEMBLE); + timevar_stop (TV_TOTAL); + timevar_print (stderr); + goto error; + } } timevar_pop (TV_ASSEMBLE); -- 1.7.11.7