diff mbox

[jit] Fix error-handling within gcc::jit::context::compile (timevar issues)

Message ID 1382380337-22512-1-git-send-email-dmalcolm@redhat.com
State New
Headers show

Commit Message

David Malcolm Oct. 21, 2013, 6:32 p.m. UTC
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 mbox

Patch

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  <dmalcolm@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  <dmalcolm@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);