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

Reply via email to