+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>
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>
* docs/topics/compilation.rst (gcc_jit_result_get_code): Fix typo.
@copying
@quotation
-libgccjit 5.0.0 (experimental 20150126), January 26, 2015
+libgccjit 5.0.0 (experimental 20150127), January 27, 2015
David Malcolm
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
+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
recording::location *
make_location () const;
+ FILE *get_file () const { return m_file; }
+
private:
recording::context &m_ctxt;
const char *m_filename;
#include "config.h"
#include "system.h"
#include "coretypes.h"
+#include "toplev.h" /* for print_version */
#include "jit-logging.h"
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
#include "tm.h"
#include "pretty-print.h"
#include "hash-map.h"
+#include "toplev.h"
#include <pthread.h>
== 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 <libgccjit.h>\n\n");
r.write ("static void\nset_options (");
r.write_params (contexts);
/* 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__
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
{
/* 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);
}
option flags in use. */
if (version_flag)
{
- print_version (stderr, "");
+ print_version (stderr, "", true);
if (! quiet_flag)
print_switch_values (print_to_stderr);
}
initialize_plugins ();
if (version_flag)
- print_version (stderr, "");
+ print_version (stderr, "", true);
if (help_flag)
print_plugins_help (stderr, "");
/* 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;