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 <[email protected]>
+ * 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 <[email protected]>
+
* 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