]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
jit: option-logging
authorDavid Malcolm <dmalcolm@redhat.com>
Tue, 3 Feb 2015 19:28:24 +0000 (19:28 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Tue, 3 Feb 2015 19:28:24 +0000 (19:28 +0000)
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.

From-SVN: r220375

gcc/jit/ChangeLog
gcc/jit/docs/_build/texinfo/libgccjit.texi
gcc/jit/docs/internals/test-hello-world.exe.log.txt
gcc/jit/jit-logging.h
gcc/jit/jit-recording.c
gcc/jit/jit-recording.h

index e25b9de296a031387347eb33bc958976f5b92465..f99b5024b95cb495bdd3015838fb03d73a535008 100644 (file)
@@ -1,3 +1,26 @@
+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
index f0a34cb6a8e6fc864999ee6a09bf8d416a597fd8..4d05587ae33292121ac9b3f83c0cef92a5ff66fa 100644 (file)
@@ -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*)
index a9abc10b5d2d4e6f0baf69aa5793e5e06b380d0e..5cb3aef8e781f50857a904530cb38b6bdb79e416 100644 (file)
@@ -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*)
index 48f223de98160c9ffabffdefad432eb5688857af..9ece0df21af259d994f41822ee2b0197c64008fb 100644 (file)
@@ -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)
     {
index 9f6e5fdeef8f6ec838d10639631077a12aaa24a6..fb0b0a9dbfa45df5c031eaf56b5d3e1c4b3fd167 100644 (file)
@@ -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.
index 0dd3164008504a32b6ec4c9d728c478cb7af2509..439e7ce62d9f729ec30ac2e742d2f237d95a4caa 100644 (file)
@@ -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: