Commit 53c04ec9 by David Malcolm Committed by David Malcolm

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
parent 710700ab
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
......
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.
......
...@@ -19,7 +19,7 @@ ...@@ -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 ...@@ -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
......
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
......
...@@ -178,6 +178,8 @@ public: ...@@ -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;
......
...@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. If not see ...@@ -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, ...@@ -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
......
...@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3. If not see ...@@ -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) ...@@ -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);
......
...@@ -728,10 +728,19 @@ compile_file (void) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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, "");
......
...@@ -80,7 +80,7 @@ extern bool user_defined_section_attribute; ...@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment