summaryrefslogtreecommitdiff
path: root/gcc/jit
diff options
context:
space:
mode:
authordmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>2015-02-03 19:28:24 +0000
committerdmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>2015-02-03 19:28:24 +0000
commit2c845fbca5d944c4f106beb8b04b5a465d387f5c (patch)
tree6edc51684fdc5e75f650680a6dd0c8c156d03087 /gcc/jit
parent617a6dfb66953e20957176c1e7e16e99e9179116 (diff)
downloadgcc-2c845fbca5d944c4f106beb8b04b5a465d387f5c.tar.gz
jit: option-logging
gcc/jit/ChangeLog: * jit-logging.h (gcc::jit::log_user::log): Make const. * jit-recording.c (gcc::jit::recording::context::set_str_option): Log the new value of the option. (gcc::jit::recording::context::set_int_option): Likewise. (gcc::jit::recording::context::set_bool_option): Likewise. (gcc::jit::recording::context::compile): Log the value of all options. (gcc::jit::recording::context::compile_to_file): Likewise. (gcc::jit::recording::context::log_all_options): New function. (gcc::jit::recording::context::log_str_option): New function. (gcc::jit::recording::context::log_int_option): New function. (gcc::jit::recording::context::log_bool_option): New function. * jit-recording.h (gcc::jit::recording::context::log_all_options): New function. (gcc::jit::recording::context::log_str_option): New function. (gcc::jit::recording::context::log_int_option): New function. (gcc::jit::recording::context::log_bool_option): New function. * docs/internals/test-hello-world.exe.log.txt: Update for above changes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@220375 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/jit')
-rw-r--r--gcc/jit/ChangeLog23
-rw-r--r--gcc/jit/docs/_build/texinfo/libgccjit.texi17
-rw-r--r--gcc/jit/docs/internals/test-hello-world.exe.log.txt17
-rw-r--r--gcc/jit/jit-logging.h4
-rw-r--r--gcc/jit/jit-recording.c73
-rw-r--r--gcc/jit/jit-recording.h5
6 files changed, 137 insertions, 2 deletions
diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog
index e25b9de296a..f99b5024b95 100644
--- a/gcc/jit/ChangeLog
+++ b/gcc/jit/ChangeLog
@@ -1,5 +1,28 @@
2015-02-03 David Malcolm <dmalcolm@redhat.com>
+ * jit-logging.h (gcc::jit::log_user::log): Make const.
+ * jit-recording.c (gcc::jit::recording::context::set_str_option):
+ Log the new value of the option.
+ (gcc::jit::recording::context::set_int_option): Likewise.
+ (gcc::jit::recording::context::set_bool_option): Likewise.
+ (gcc::jit::recording::context::compile): Log the value of all
+ options.
+ (gcc::jit::recording::context::compile_to_file): Likewise.
+ (gcc::jit::recording::context::log_all_options): New function.
+ (gcc::jit::recording::context::log_str_option): New function.
+ (gcc::jit::recording::context::log_int_option): New function.
+ (gcc::jit::recording::context::log_bool_option): New function.
+ * jit-recording.h (gcc::jit::recording::context::log_all_options):
+ New function.
+ (gcc::jit::recording::context::log_str_option): New function.
+ (gcc::jit::recording::context::log_int_option): New function.
+ (gcc::jit::recording::context::log_bool_option): New function.
+ * docs/internals/test-hello-world.exe.log.txt: Update for above
+ changes.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+
+2015-02-03 David Malcolm <dmalcolm@redhat.com>
+
PR jit/64810
* Make-lang.in (jit_OBJS): Add jit/jit-spec.o and gcc.o.
(LIBGCCJIT_FILENAME): Add EXTRA_GCC_OBJS.
diff --git a/gcc/jit/docs/_build/texinfo/libgccjit.texi b/gcc/jit/docs/_build/texinfo/libgccjit.texi
index f0a34cb6a8e..4d05587ae33 100644
--- a/gcc/jit/docs/_build/texinfo/libgccjit.texi
+++ b/gcc/jit/docs/_build/texinfo/libgccjit.texi
@@ -13756,18 +13756,25 @@ generated via this call:
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: GCC_JIT_STR_OPTION_PROGNAME: "./test-hello-world.c.exe"
JIT: exiting: gcc_jit_context_set_str_option
JIT: entering: gcc_jit_context_set_int_option
+JIT: GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL: 3
JIT: exiting: gcc_jit_context_set_int_option
JIT: entering: gcc_jit_context_set_bool_option
+JIT: GCC_JIT_BOOL_OPTION_DEBUGINFO: true
JIT: exiting: gcc_jit_context_set_bool_option
JIT: entering: gcc_jit_context_set_bool_option
+JIT: GCC_JIT_BOOL_OPTION_DUMP_INITIAL_TREE: false
JIT: exiting: gcc_jit_context_set_bool_option
JIT: entering: gcc_jit_context_set_bool_option
+JIT: GCC_JIT_BOOL_OPTION_DUMP_INITIAL_GIMPLE: false
JIT: exiting: gcc_jit_context_set_bool_option
JIT: entering: gcc_jit_context_set_bool_option
+JIT: GCC_JIT_BOOL_OPTION_SELFCHECK_GC: true
JIT: exiting: gcc_jit_context_set_bool_option
JIT: entering: gcc_jit_context_set_bool_option
+JIT: GCC_JIT_BOOL_OPTION_DUMP_SUMMARY: false
JIT: exiting: gcc_jit_context_set_bool_option
JIT: entering: gcc_jit_context_get_type
JIT: exiting: gcc_jit_context_get_type
@@ -13802,6 +13809,16 @@ JIT: exiting: gcc_jit_context_dump_reproducer_to_file
JIT: entering: gcc_jit_context_compile
JIT: in-memory compile of ctxt: 0x1283e20
JIT: entering: gcc::jit::result* gcc::jit::recording::context::compile()
+JIT: GCC_JIT_STR_OPTION_PROGNAME: "./test-hello-world.c.exe"
+JIT: GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL: 3
+JIT: GCC_JIT_BOOL_OPTION_DEBUGINFO: true
+JIT: GCC_JIT_BOOL_OPTION_DUMP_INITIAL_TREE: false
+JIT: GCC_JIT_BOOL_OPTION_DUMP_INITIAL_GIMPLE: false
+JIT: GCC_JIT_BOOL_OPTION_DUMP_GENERATED_CODE: false
+JIT: GCC_JIT_BOOL_OPTION_DUMP_SUMMARY: false
+JIT: GCC_JIT_BOOL_OPTION_DUMP_EVERYTHING: false
+JIT: GCC_JIT_BOOL_OPTION_SELFCHECK_GC: true
+JIT: GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES: false
JIT: entering: void gcc::jit::recording::context::validate()
JIT: exiting: void gcc::jit::recording::context::validate()
JIT: entering: gcc::jit::playback::context::context(gcc::jit::recording::context*)
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 a9abc10b5d2..5cb3aef8e78 100644
--- a/gcc/jit/docs/internals/test-hello-world.exe.log.txt
+++ b/gcc/jit/docs/internals/test-hello-world.exe.log.txt
@@ -1,18 +1,25 @@
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: GCC_JIT_STR_OPTION_PROGNAME: "./test-hello-world.c.exe"
JIT: exiting: gcc_jit_context_set_str_option
JIT: entering: gcc_jit_context_set_int_option
+JIT: GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL: 3
JIT: exiting: gcc_jit_context_set_int_option
JIT: entering: gcc_jit_context_set_bool_option
+JIT: GCC_JIT_BOOL_OPTION_DEBUGINFO: true
JIT: exiting: gcc_jit_context_set_bool_option
JIT: entering: gcc_jit_context_set_bool_option
+JIT: GCC_JIT_BOOL_OPTION_DUMP_INITIAL_TREE: false
JIT: exiting: gcc_jit_context_set_bool_option
JIT: entering: gcc_jit_context_set_bool_option
+JIT: GCC_JIT_BOOL_OPTION_DUMP_INITIAL_GIMPLE: false
JIT: exiting: gcc_jit_context_set_bool_option
JIT: entering: gcc_jit_context_set_bool_option
+JIT: GCC_JIT_BOOL_OPTION_SELFCHECK_GC: true
JIT: exiting: gcc_jit_context_set_bool_option
JIT: entering: gcc_jit_context_set_bool_option
+JIT: GCC_JIT_BOOL_OPTION_DUMP_SUMMARY: false
JIT: exiting: gcc_jit_context_set_bool_option
JIT: entering: gcc_jit_context_get_type
JIT: exiting: gcc_jit_context_get_type
@@ -47,6 +54,16 @@ JIT: exiting: gcc_jit_context_dump_reproducer_to_file
JIT: entering: gcc_jit_context_compile
JIT: in-memory compile of ctxt: 0x1283e20
JIT: entering: gcc::jit::result* gcc::jit::recording::context::compile()
+JIT: GCC_JIT_STR_OPTION_PROGNAME: "./test-hello-world.c.exe"
+JIT: GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL: 3
+JIT: GCC_JIT_BOOL_OPTION_DEBUGINFO: true
+JIT: GCC_JIT_BOOL_OPTION_DUMP_INITIAL_TREE: false
+JIT: GCC_JIT_BOOL_OPTION_DUMP_INITIAL_GIMPLE: false
+JIT: GCC_JIT_BOOL_OPTION_DUMP_GENERATED_CODE: false
+JIT: GCC_JIT_BOOL_OPTION_DUMP_SUMMARY: false
+JIT: GCC_JIT_BOOL_OPTION_DUMP_EVERYTHING: false
+JIT: GCC_JIT_BOOL_OPTION_SELFCHECK_GC: true
+JIT: GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES: false
JIT: entering: void gcc::jit::recording::context::validate()
JIT: exiting: void gcc::jit::recording::context::validate()
JIT: entering: gcc::jit::playback::context::context(gcc::jit::recording::context*)
diff --git a/gcc/jit/jit-logging.h b/gcc/jit/jit-logging.h
index 48f223de981..9ece0df21af 100644
--- a/gcc/jit/jit-logging.h
+++ b/gcc/jit/jit-logging.h
@@ -127,7 +127,7 @@ class log_user
logger * get_logger () const { return m_logger; }
void set_logger (logger * logger);
- void log (const char *fmt, ...)
+ void log (const char *fmt, ...) const
GNU_PRINTF(2, 3);
void enter_scope (const char *scope_name);
@@ -141,7 +141,7 @@ class log_user
case where the underlying logger is NULL via a no-op. */
inline void
-log_user::log (const char *fmt, ...)
+log_user::log (const char *fmt, ...) const
{
if (m_logger)
{
diff --git a/gcc/jit/jit-recording.c b/gcc/jit/jit-recording.c
index 9f6e5fdeef8..fb0b0a9dbfa 100644
--- a/gcc/jit/jit-recording.c
+++ b/gcc/jit/jit-recording.c
@@ -1093,6 +1093,7 @@ recording::context::set_str_option (enum gcc_jit_str_option opt,
}
free (m_str_options[opt]);
m_str_options[opt] = value ? xstrdup (value) : NULL;
+ log_str_option (opt);
}
/* Set the given integer option for this context, or add an error if
@@ -1112,6 +1113,7 @@ recording::context::set_int_option (enum gcc_jit_int_option opt,
return;
}
m_int_options[opt] = value;
+ log_int_option (opt);
}
/* Set the given boolean option for this context, or add an error if
@@ -1131,6 +1133,7 @@ recording::context::set_bool_option (enum gcc_jit_bool_option opt,
return;
}
m_bool_options[opt] = value ? true : false;
+ log_bool_option (opt);
}
/* Add the given dumpname/out_ptr pair to this context's list of requested
@@ -1164,6 +1167,8 @@ recording::context::compile ()
{
JIT_LOG_SCOPE (get_logger ());
+ log_all_options ();
+
validate ();
if (errors_occurred ())
@@ -1192,6 +1197,8 @@ recording::context::compile_to_file (enum gcc_jit_output_kind output_kind,
{
JIT_LOG_SCOPE (get_logger ());
+ log_all_options ();
+
validate ();
if (errors_occurred ())
@@ -1378,6 +1385,72 @@ static const char * const
"GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES"
};
+
+/* Write the current value of all options to the log file (if any). */
+
+void
+recording::context::log_all_options () const
+{
+ int opt_idx;
+
+ if (!get_logger ())
+ return;
+
+ for (opt_idx = 0; opt_idx < GCC_JIT_NUM_STR_OPTIONS; opt_idx++)
+ log_str_option ((enum gcc_jit_str_option)opt_idx);
+
+ for (opt_idx = 0; opt_idx < GCC_JIT_NUM_INT_OPTIONS; opt_idx++)
+ log_int_option ((enum gcc_jit_int_option)opt_idx);
+
+ for (opt_idx = 0; opt_idx < GCC_JIT_NUM_BOOL_OPTIONS; opt_idx++)
+ log_bool_option ((enum gcc_jit_bool_option)opt_idx);
+}
+
+/* Write the current value of the given string option to the
+ log file (if any). */
+
+void
+recording::context::log_str_option (enum gcc_jit_str_option opt) const
+{
+ gcc_assert (opt < GCC_JIT_NUM_STR_OPTIONS);
+ if (get_logger ())
+ {
+ if (m_str_options[opt])
+ log ("%s: \"%s\"",
+ str_option_reproducer_strings[opt],
+ m_str_options[opt]);
+ else
+ log ("%s: NULL",
+ str_option_reproducer_strings[opt]);
+ }
+}
+
+/* Write the current value of the given int option to the
+ log file (if any). */
+
+void
+recording::context::log_int_option (enum gcc_jit_int_option opt) const
+{
+ gcc_assert (opt < GCC_JIT_NUM_INT_OPTIONS);
+ if (get_logger ())
+ log ("%s: %i",
+ int_option_reproducer_strings[opt],
+ m_int_options[opt]);
+}
+
+/* Write the current value of the given bool option to the
+ log file (if any). */
+
+void
+recording::context::log_bool_option (enum gcc_jit_bool_option opt) const
+{
+ gcc_assert (opt < GCC_JIT_NUM_BOOL_OPTIONS);
+ if (get_logger ())
+ log ("%s: %s",
+ bool_option_reproducer_strings[opt],
+ m_bool_options[opt] ? "true" : "false");
+}
+
/* Write C source code to PATH that attempts to replay the API
calls made to this context (and its parents), for use in
minimizing test cases for libgccjit.
diff --git a/gcc/jit/jit-recording.h b/gcc/jit/jit-recording.h
index 0dd31640085..439e7ce62d9 100644
--- a/gcc/jit/jit-recording.h
+++ b/gcc/jit/jit-recording.h
@@ -256,6 +256,11 @@ public:
get_all_requested_dumps (vec <recording::requested_dump> *out);
private:
+ void log_all_options () const;
+ void log_str_option (enum gcc_jit_str_option opt) const;
+ void log_int_option (enum gcc_jit_int_option opt) const;
+ void log_bool_option (enum gcc_jit_bool_option opt) const;
+
void validate ();
private: