This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[debug-early, jit] Port of jit to debug-early


"jit" isn't part of "all" languages, and currently fails to build on
the aldyh/debug-early branch:

../../src/gcc/jit/jit-playback.c: In member function âvoid gcc::jit::playback::context::write_global_decls_2()â:
../../src/gcc/jit/jit-playback.c:710:20: error: âconst struct gcc_debug_hooksâ has no member named âglobal_declâ
       debug_hooks->global_decl (decl);

This patch (on top of today's 1a07de5e93cc9e18d899a6a1b7d01436167ab1b1)
fixes the build of the jit.

"make check-jit" works, with:
      # of expected passes            7609

I verified the debuggability of jitted code by hand by

  (a) running jit.dg/test-using-globals.c
      and inspecting globals, and

  (b) running jit.dg/test-fibonacci.c and
      single-stepping through the code in gdb:

      (gdb) break my_fibonacci
      (gdb) run
      Breakpoint 1, my_fibonacci (x=10) at /home/david/coding-3/gcc-git-jit-early-debug/src/gcc/testsuite/jit.dg/test-fibonacci.c:19
      19	FIRST_LINE + 3:   if (x < 2)
      (gdb) next
      16	FIRST_LINE + 0: int
      (gdb) next
      19	FIRST_LINE + 3:   if (x < 2)
      (gdb) next
      22	FIRST_LINE + 6:     return my_fibonacci (x - 1) + my_fibonacci (x - 2);

OK for your branch?

gcc/jit/ChangeLog:
	* dummy-frontend.c (jit_langhook_write_globals): Rename to...
	(jit_langhook_post_compilation_parsing_cleanups): ...this, and
	eliminate calls to finalize_compilation_unit and
	write_global_decls_2.
	(LANG_HOOKS_WRITE_GLOBALS): Rename to...
	(LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS): ...this and
	redirect from jit_langhook_write_globals to
	jit_langhook_post_compilation_parsing_cleanups.
	* jit-playback.c
	(gcc::jit::playback::context::write_global_decls_1): Rename to...
	(gcc::jit::playback::context::finalize_global_decls): ...this.
	(gcc::jit::playback::context::write_global_decls_1): Delete.
	* jit-playback.h
	(gcc::jit::playback::context::write_global_decls_1): Rename to...
	(gcc::jit::playback::context::finalize_global_decls): ...this.
	(gcc::jit::playback::context::write_global_decls_1): Delete.
---
 gcc/jit/dummy-frontend.c | 14 +++++---------
 gcc/jit/jit-playback.c   | 25 ++-----------------------
 gcc/jit/jit-playback.h   |  4 +---
 3 files changed, 8 insertions(+), 35 deletions(-)

diff --git a/gcc/jit/dummy-frontend.c b/gcc/jit/dummy-frontend.c
index 8f7d06a..374df6f 100644
--- a/gcc/jit/dummy-frontend.c
+++ b/gcc/jit/dummy-frontend.c
@@ -222,18 +222,13 @@ jit_langhook_getdecls (void)
 }
 
 static void
-jit_langhook_write_globals (void)
+jit_langhook_post_compilation_parsing_cleanups (void)
 {
   gcc::jit::playback::context *ctxt = gcc::jit::active_playback_ctxt;
   gcc_assert (ctxt);
   JIT_LOG_SCOPE (ctxt->get_logger ());
 
-  ctxt->write_global_decls_1 ();
-
-  /* This is the hook that runs the middle and backends: */
-  symtab->finalize_compilation_unit ();
-
-  ctxt->write_global_decls_2 ();
+  ctxt->finalize_global_decls ();
 }
 
 #undef LANG_HOOKS_NAME
@@ -263,8 +258,9 @@ jit_langhook_write_globals (void)
 #undef LANG_HOOKS_GETDECLS
 #define LANG_HOOKS_GETDECLS		jit_langhook_getdecls
 
-#undef LANG_HOOKS_WRITE_GLOBALS
-#define LANG_HOOKS_WRITE_GLOBALS	jit_langhook_write_globals
+#undef LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS
+#define LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS \
+  jit_langhook_post_compilation_parsing_cleanups
 
 struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
 
diff --git a/gcc/jit/jit-playback.c b/gcc/jit/jit-playback.c
index c75c076..0d329b0 100644
--- a/gcc/jit/jit-playback.c
+++ b/gcc/jit/jit-playback.c
@@ -673,14 +673,13 @@ as_truth_value (tree expr, location *loc)
   return expr;
 }
 
-/* For use by jit_langhook_write_globals.
+/* For use by jit_langhook_post_compilation_parsing_cleanups
    Calls varpool_node::finalize_decl on each global.  */
 
 void
 playback::context::
-write_global_decls_1 ()
+finalize_global_decls ()
 {
-  /* Compare with e.g. the C frontend's c_write_global_declarations.  */
   JIT_LOG_SCOPE (get_logger ());
 
   int i;
@@ -692,26 +691,6 @@ write_global_decls_1 ()
     }
 }
 
-/* For use by jit_langhook_write_globals.
-   Calls debug_hooks->global_decl on each global.  */
-
-void
-playback::context::
-write_global_decls_2 ()
-{
-  /* Compare with e.g. the C frontend's c_write_global_declarations_2. */
-  JIT_LOG_SCOPE (get_logger ());
-
-  int i;
-  tree decl;
-  FOR_EACH_VEC_ELT (m_globals, i, decl)
-    {
-      gcc_assert (TREE_CODE (decl) == VAR_DECL);
-      debug_hooks->global_decl (decl);
-    }
-}
-
-
 /* Construct a playback::rvalue instance (wrapping a tree) for a
    unary op.  */
 
diff --git a/gcc/jit/jit-playback.h b/gcc/jit/jit-playback.h
index e9832f0..84d99e4 100644
--- a/gcc/jit/jit-playback.h
+++ b/gcc/jit/jit-playback.h
@@ -215,9 +215,7 @@ public:
     return m_recording_ctxt->errors_occurred ();
   }
 
-  /* For use by jit_langhook_write_globals.  */
-  void write_global_decls_1 ();
-  void write_global_decls_2 ();
+  void finalize_global_decls ();
 
 private:
   void dump_generated_code ();
-- 
1.8.5.3


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]