diff --git a/src/codegen.cpp b/src/codegen.cpp index 7bb97b9fbaff9..3b976a1e170f6 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -57,12 +57,14 @@ // support #include #include +#include #include #include #include // for llvmcall #include // for llvmcall inlining #include #include // for llvmcall validation +#include #include // C API @@ -7598,6 +7600,13 @@ extern "C" void jl_init_codegen(void) jl_init_intrinsic_functions_codegen(m); } +extern "C" void jl_teardown_codegen() +{ + // output LLVM timings and statistics + reportAndResetTimings(); + PrintStatistics(); +} + // the rest of this file are convenience functions // that are exported for assisting with debugging from gdb extern "C" void jl_dump_llvm_value(void *v) diff --git a/src/init.c b/src/init.c index 633c2e5d5c684..019f97c81a874 100644 --- a/src/init.c +++ b/src/init.c @@ -290,6 +290,8 @@ JL_DLLEXPORT void jl_atexit_hook(int exitcode) #ifdef ENABLE_TIMINGS jl_print_timings(); #endif + + jl_teardown_codegen(); } static void post_boot_hooks(void); diff --git a/src/julia_internal.h b/src/julia_internal.h index 07e28ccd8ce16..6be5cbb952d27 100644 --- a/src/julia_internal.h +++ b/src/julia_internal.h @@ -539,6 +539,8 @@ void jl_init_uv(void); void jl_init_debuginfo(void); void jl_init_thread_heap(jl_ptls_t ptls); +void jl_teardown_codegen(void); + void _julia_init(JL_IMAGE_SEARCH rel); void jl_set_base_ctx(char *__stk);