This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[jit] Fix error-handling within gcc::jit::context::compile (timevar issues)
- From: David Malcolm <dmalcolm at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org, jit at gcc dot gnu dot org
- Cc: David Malcolm <dmalcolm at redhat dot com>
- Date: Mon, 21 Oct 2013 14:32:17 -0400
- Subject: [jit] Fix error-handling within gcc::jit::context::compile (timevar issues)
- Authentication-results: sourceware.org; auth=none
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 <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);
--
1.7.11.7