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
This commit is contained in:
David Malcolm 2015-01-27 20:19:36 +00:00 committed by David Malcolm
parent 710700abb8
commit 53c04ec92a
9 changed files with 60 additions and 13 deletions

View File

@ -1,3 +1,13 @@
2015-01-27 David Malcolm <dmalcolm@redhat.com>
* 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 <hubicka@ucw.cz> 2015-01-27 Jan Hubicka <hubicka@ucw.cz>
PR ipa/60871 PR ipa/60871

View File

@ -1,3 +1,15 @@
2015-01-27 David Malcolm <dmalcolm@redhat.com>
* 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 <dmalcolm@redhat.com> 2015-01-26 David Malcolm <dmalcolm@redhat.com>
* docs/topics/compilation.rst (gcc_jit_result_get_code): Fix typo. * docs/topics/compilation.rst (gcc_jit_result_get_code): Fix typo.

View File

@ -19,7 +19,7 @@
@copying @copying
@quotation @quotation
libgccjit 5.0.0 (experimental 20150126), January 26, 2015 libgccjit 5.0.0 (experimental 20150127), January 27, 2015
David Malcolm 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: generated via this call:
@example @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: entering: gcc_jit_context_set_str_option
JIT: exiting: gcc_jit_context_set_str_option JIT: exiting: gcc_jit_context_set_str_option
JIT: entering: gcc_jit_context_set_int_option JIT: entering: gcc_jit_context_set_int_option

View File

@ -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: entering: gcc_jit_context_set_str_option
JIT: exiting: gcc_jit_context_set_str_option JIT: exiting: gcc_jit_context_set_str_option
JIT: entering: gcc_jit_context_set_int_option JIT: entering: gcc_jit_context_set_int_option

View File

@ -178,6 +178,8 @@ public:
recording::location * recording::location *
make_location () const; make_location () const;
FILE *get_file () const { return m_file; }
private: private:
recording::context &m_ctxt; recording::context &m_ctxt;
const char *m_filename; const char *m_filename;

View File

@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h" #include "config.h"
#include "system.h" #include "system.h"
#include "coretypes.h" #include "coretypes.h"
#include "toplev.h" /* for print_version */
#include "jit-logging.h" #include "jit-logging.h"
@ -41,6 +42,8 @@ logger::logger (FILE *f_out,
m_indent_level (0), m_indent_level (0),
m_log_refcount_changes (false) 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 /* The destructor for gcc::jit::logger, invoked via

View File

@ -24,6 +24,7 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h" #include "tm.h"
#include "pretty-print.h" #include "pretty-print.h"
#include "hash-map.h" #include "hash-map.h"
#include "toplev.h"
#include <pthread.h> #include <pthread.h>
@ -1414,7 +1415,9 @@ recording::context::dump_reproducer_to_file (const char *path)
== contexts[0]); == contexts[0]);
r.write ("/* This code was autogenerated by" 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 <libgccjit.h>\n\n"); r.write ("#include <libgccjit.h>\n\n");
r.write ("static void\nset_options ("); r.write ("static void\nset_options (");
r.write_params (contexts); r.write_params (contexts);

View File

@ -728,10 +728,19 @@ compile_file (void)
/* Print version information to FILE. /* Print version information to FILE.
Each line begins with INDENT (for the case where FILE is the 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 void
print_version (FILE *file, const char *indent) print_version (FILE *file, const char *indent, bool show_global_state)
{ {
static const char fmt1[] = static const char fmt1[] =
#ifdef __GNUC__ #ifdef __GNUC__
@ -791,12 +800,16 @@ print_version (FILE *file, const char *indent)
file == stderr ? _(fmt3) : fmt3, file == stderr ? _(fmt3) : fmt3,
indent, *indent != 0 ? " " : "", indent, *indent != 0 ? " " : "",
"MPC", MPC_VERSION_STRING, mpc_get_version ()); "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 static int
@ -1008,7 +1021,7 @@ init_asm_output (const char *name)
{ {
/* Print the list of switches in effect /* Print the list of switches in effect
into the assembler file as comments. */ 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); print_switch_values (print_to_asm_out_file);
putc ('\n', asm_out_file); putc ('\n', asm_out_file);
} }
@ -1426,7 +1439,7 @@ process_options (void)
option flags in use. */ option flags in use. */
if (version_flag) if (version_flag)
{ {
print_version (stderr, ""); print_version (stderr, "", true);
if (! quiet_flag) if (! quiet_flag)
print_switch_values (print_to_stderr); print_switch_values (print_to_stderr);
} }
@ -2135,7 +2148,7 @@ toplev::main (int argc, char **argv)
initialize_plugins (); initialize_plugins ();
if (version_flag) if (version_flag)
print_version (stderr, ""); print_version (stderr, "", true);
if (help_flag) if (help_flag)
print_plugins_help (stderr, ""); print_plugins_help (stderr, "");

View File

@ -80,7 +80,7 @@ extern bool user_defined_section_attribute;
/* See toplev.c. */ /* See toplev.c. */
extern int flag_rerun_cse_after_global_opts; 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. */ /* The hashtable, so that the C front ends can pass it to cpplib. */
extern struct ht *ident_hash; extern struct ht *ident_hash;