From: David Malcolm Date: Tue, 27 Jan 2015 20:19:36 +0000 (+0000) Subject: toplev: gcc version information for jit X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=53c04ec92a37b35a7f37e00bd5a4b611cf470e3c;p=gcc.git toplev: gcc version information for jit gcc/ChangeLog: * toplev.c (print_version): Add param "show_global_state", and only print GGC and plugin information if it is true. (init_asm_output): Pass in "true" for the new param when calling print_version. (process_options): Likewise. (toplev::main): Likewise. * toplev.h (print_version): Add new param to decl. gcc/jit/ChangeLog: * docs/internals/test-hello-world.exe.log.txt: Add example version lines. * jit-common.h (gcc::jit::dump::get_file): New accessor. * jit-logging.c: Include toplev.h. (gcc::jit::logger::logger): Log the GCC version. * jit-recording.c: Include toplev.h. (gcc:jit::recording::context::dump_reproducer_to_file): Log the GCC version. From-SVN: r220190 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 36d0045f194..67d3fc77555 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2015-01-27 David Malcolm + + * toplev.c (print_version): Add param "show_global_state", and + only print GGC and plugin information if it is true. + (init_asm_output): Pass in "true" for the new param when calling + print_version. + (process_options): Likewise. + (toplev::main): Likewise. + * toplev.h (print_version): Add new param to decl. + 2015-01-27 Jan Hubicka PR ipa/60871 diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog index 577712cc6bc..a260ab083a2 100644 --- a/gcc/jit/ChangeLog +++ b/gcc/jit/ChangeLog @@ -1,3 +1,15 @@ +2015-01-27 David Malcolm + + * docs/internals/test-hello-world.exe.log.txt: Add example version + lines. + * docs/_build/texinfo/libgccjit.texi: Regenerate. + * jit-common.h (gcc::jit::dump::get_file): New accessor. + * jit-logging.c: Include toplev.h. + (gcc::jit::logger::logger): Log the GCC version. + * jit-recording.c: Include toplev.h. + (gcc:jit::recording::context::dump_reproducer_to_file): Log the + GCC version. + 2015-01-26 David Malcolm * docs/topics/compilation.rst (gcc_jit_result_get_code): Fix typo. diff --git a/gcc/jit/docs/_build/texinfo/libgccjit.texi b/gcc/jit/docs/_build/texinfo/libgccjit.texi index 3c324996052..37c466480cd 100644 --- a/gcc/jit/docs/_build/texinfo/libgccjit.texi +++ b/gcc/jit/docs/_build/texinfo/libgccjit.texi @@ -19,7 +19,7 @@ @copying @quotation -libgccjit 5.0.0 (experimental 20150126), January 26, 2015 +libgccjit 5.0.0 (experimental 20150127), January 27, 2015 David Malcolm @@ -13753,6 +13753,8 @@ via @pxref{5b,,gcc_jit_context_set_logfile()}. Here is an example of a log generated via this call: @example +JIT: libgccjit (GCC) version 5.0.0 20150123 (experimental) (x86_64-unknown-linux-gnu) +JIT: compiled by GNU C version 4.8.3 20140911 (Red Hat 4.8.3-7), GMP version 5.1.2, MPFR version 3.1.2, MPC version 1.0.1 JIT: entering: gcc_jit_context_set_str_option JIT: exiting: gcc_jit_context_set_str_option JIT: entering: gcc_jit_context_set_int_option diff --git a/gcc/jit/docs/internals/test-hello-world.exe.log.txt b/gcc/jit/docs/internals/test-hello-world.exe.log.txt index 205b6b47558..876d830b84a 100644 --- a/gcc/jit/docs/internals/test-hello-world.exe.log.txt +++ b/gcc/jit/docs/internals/test-hello-world.exe.log.txt @@ -1,3 +1,5 @@ +JIT: libgccjit (GCC) version 5.0.0 20150123 (experimental) (x86_64-unknown-linux-gnu) +JIT: compiled by GNU C version 4.8.3 20140911 (Red Hat 4.8.3-7), GMP version 5.1.2, MPFR version 3.1.2, MPC version 1.0.1 JIT: entering: gcc_jit_context_set_str_option JIT: exiting: gcc_jit_context_set_str_option JIT: entering: gcc_jit_context_set_int_option diff --git a/gcc/jit/jit-common.h b/gcc/jit/jit-common.h index 09d63badd9c..8753651a2be 100644 --- a/gcc/jit/jit-common.h +++ b/gcc/jit/jit-common.h @@ -178,6 +178,8 @@ public: recording::location * make_location () const; + FILE *get_file () const { return m_file; } + private: recording::context &m_ctxt; const char *m_filename; diff --git a/gcc/jit/jit-logging.c b/gcc/jit/jit-logging.c index 61b898b00bd..22ab6fd4238 100644 --- a/gcc/jit/jit-logging.c +++ b/gcc/jit/jit-logging.c @@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. If not see #include "config.h" #include "system.h" #include "coretypes.h" +#include "toplev.h" /* for print_version */ #include "jit-logging.h" @@ -41,6 +42,8 @@ logger::logger (FILE *f_out, m_indent_level (0), m_log_refcount_changes (false) { + /* Begin the log by writing the GCC version. */ + print_version (f_out, "JIT:", false); } /* The destructor for gcc::jit::logger, invoked via diff --git a/gcc/jit/jit-recording.c b/gcc/jit/jit-recording.c index 1077f2732e9..9f6e5fdeef8 100644 --- a/gcc/jit/jit-recording.c +++ b/gcc/jit/jit-recording.c @@ -24,6 +24,7 @@ along with GCC; see the file COPYING3. If not see #include "tm.h" #include "pretty-print.h" #include "hash-map.h" +#include "toplev.h" #include @@ -1414,7 +1415,9 @@ recording::context::dump_reproducer_to_file (const char *path) == contexts[0]); r.write ("/* This code was autogenerated by" - " gcc_jit_context_dump_reproducer_to_file. */\n\n"); + " gcc_jit_context_dump_reproducer_to_file.\n\n"); + print_version (r.get_file (), " ", false); + r.write ("*/\n"); r.write ("#include \n\n"); r.write ("static void\nset_options ("); r.write_params (contexts); diff --git a/gcc/toplev.c b/gcc/toplev.c index 50846280053..bc2ca3b3a27 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -728,10 +728,19 @@ compile_file (void) /* Print version information to FILE. Each line begins with INDENT (for the case where FILE is the - assembler output file). */ + assembler output file). + + If SHOW_GLOBAL_STATE is true (for cc1 etc), we are within the compiler + proper and can print pertinent state (e.g. params and plugins). + + If SHOW_GLOBAL_STATE is false (for use by libgccjit), we are outside the + compiler, and we don't hold the mutex on the compiler's global state: + we can't print params and plugins, since they might not be initialized, + or might be being manipulated by a compile running in another + thread. */ void -print_version (FILE *file, const char *indent) +print_version (FILE *file, const char *indent, bool show_global_state) { static const char fmt1[] = #ifdef __GNUC__ @@ -791,12 +800,16 @@ print_version (FILE *file, const char *indent) file == stderr ? _(fmt3) : fmt3, indent, *indent != 0 ? " " : "", "MPC", MPC_VERSION_STRING, mpc_get_version ()); - fprintf (file, - file == stderr ? _(fmt4) : fmt4, - indent, *indent != 0 ? " " : "", - PARAM_VALUE (GGC_MIN_EXPAND), PARAM_VALUE (GGC_MIN_HEAPSIZE)); - print_plugins_versions (file, indent); + if (show_global_state) + { + fprintf (file, + file == stderr ? _(fmt4) : fmt4, + indent, *indent != 0 ? " " : "", + PARAM_VALUE (GGC_MIN_EXPAND), PARAM_VALUE (GGC_MIN_HEAPSIZE)); + + print_plugins_versions (file, indent); + } } static int @@ -1008,7 +1021,7 @@ init_asm_output (const char *name) { /* Print the list of switches in effect into the assembler file as comments. */ - print_version (asm_out_file, ASM_COMMENT_START); + print_version (asm_out_file, ASM_COMMENT_START, true); print_switch_values (print_to_asm_out_file); putc ('\n', asm_out_file); } @@ -1426,7 +1439,7 @@ process_options (void) option flags in use. */ if (version_flag) { - print_version (stderr, ""); + print_version (stderr, "", true); if (! quiet_flag) print_switch_values (print_to_stderr); } @@ -2135,7 +2148,7 @@ toplev::main (int argc, char **argv) initialize_plugins (); if (version_flag) - print_version (stderr, ""); + print_version (stderr, "", true); if (help_flag) print_plugins_help (stderr, ""); diff --git a/gcc/toplev.h b/gcc/toplev.h index 6b423be3c51..9527f76ac6e 100644 --- a/gcc/toplev.h +++ b/gcc/toplev.h @@ -80,7 +80,7 @@ extern bool user_defined_section_attribute; /* See toplev.c. */ extern int flag_rerun_cse_after_global_opts; -extern void print_version (FILE *, const char *); +extern void print_version (FILE *, const char *, bool); /* The hashtable, so that the C front ends can pass it to cpplib. */ extern struct ht *ident_hash;