Hi. This option will be useful for rustc_codegen_gcc to hide the error about unsupported 128-bit integer types.
David, if you know of a better way to check if these types are supported than creating such a type and checking if it causes an error, I will not need this patch. Thanks for the reviews!
From 002c6803ac7069bf18eabd6729e31de8e2be6128 Mon Sep 17 00:00:00 2001 From: Antoni Boucher <boua...@zoho.com> Date: Sun, 9 Jan 2022 13:46:35 -0500 Subject: [PATCH] libgccjit: Add option to hide stderr logs [PR104073] 2022-01-17 Antoni Boucher <boua...@zoho.com gcc/jit/ PR target/104073 * docs/topics/contexts.rst: Add documentation for the new option GCC_JIT_BOOL_OPTION_HIDE_LOG_STDERR. * jit-recording.c: handle the option GCC_JIT_BOOL_OPTION_HIDE_LOG_STDERR. * libgccjit.h: New option GCC_JIT_BOOL_OPTION_HIDE_LOG_STDERR. --- gcc/jit/docs/topics/contexts.rst | 4 ++++ gcc/jit/jit-recording.c | 25 ++++++++++++++++--------- gcc/jit/libgccjit.h | 3 +++ 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/gcc/jit/docs/topics/contexts.rst b/gcc/jit/docs/topics/contexts.rst index 68ab7ab1321..193f5096de9 100644 --- a/gcc/jit/docs/topics/contexts.rst +++ b/gcc/jit/docs/topics/contexts.rst @@ -453,6 +453,10 @@ Boolean options If true, the :type:`gcc_jit_context` will not clean up intermediate files written to the filesystem, and will display their location on stderr. + .. macro:: GCC_JIT_BOOL_OPTION_HIDE_LOG_STDERR + + If true, libgccjit will not log the errors on stderr. + .. function:: void \ gcc_jit_context_set_bool_allow_unreachable_blocks (gcc_jit_context *ctxt, \ int bool_value) diff --git a/gcc/jit/jit-recording.c b/gcc/jit/jit-recording.c index ee8934131d1..a6928005e9b 100644 --- a/gcc/jit/jit-recording.c +++ b/gcc/jit/jit-recording.c @@ -1551,15 +1551,21 @@ recording::context::add_error_va (location *loc, const char *fmt, va_list ap) if (!ctxt_progname) ctxt_progname = "libgccjit.so"; - if (loc) - fprintf (stderr, "%s: %s: error: %s\n", - ctxt_progname, - loc->get_debug_string (), - errmsg); - else - fprintf (stderr, "%s: error: %s\n", - ctxt_progname, - errmsg); + bool hide_log_stderr = + get_bool_option (GCC_JIT_BOOL_OPTION_HIDE_LOG_STDERR); + + if (!hide_log_stderr) + { + if (loc) + fprintf (stderr, "%s: %s: error: %s\n", + ctxt_progname, + loc->get_debug_string (), + errmsg); + else + fprintf (stderr, "%s: error: %s\n", + ctxt_progname, + errmsg); + } if (!m_error_count) { @@ -1682,6 +1688,7 @@ static const char * const "GCC_JIT_BOOL_OPTION_DUMP_EVERYTHING", "GCC_JIT_BOOL_OPTION_SELFCHECK_GC", "GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES" + "GCC_JIT_BOOL_OPTION_HIDE_LOG_STDERR" }; static const char * const diff --git a/gcc/jit/libgccjit.h b/gcc/jit/libgccjit.h index 2a5ffacb1fe..272b862c164 100644 --- a/gcc/jit/libgccjit.h +++ b/gcc/jit/libgccjit.h @@ -241,6 +241,9 @@ enum gcc_jit_bool_option their location on stderr. */ GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES, + /* If true, gcc_jit_context_release will not print the errors to stderr. */ + GCC_JIT_BOOL_OPTION_HIDE_LOG_STDERR, + GCC_JIT_NUM_BOOL_OPTIONS }; -- 2.26.2.7.g19db9cfb68.dirty