[jit] New API entrypoint: gcc_jit_block_get_function

David Malcolm dmalcolm@redhat.com
Fri Feb 28 15:47:00 GMT 2014


Committed to branch dmalcolm/jit:

gcc/jit/
	* libgccjit.h (gcc_jit_block_get_function): New.
	* libgccjit.map (gcc_jit_block_get_function): New.
	* libgccjit++.h (gccjit::block::get_function): New method.
	* libgccjit.c (gcc_jit_block_get_function): New.
---
 gcc/jit/ChangeLog.jit | 7 +++++++
 gcc/jit/libgccjit++.h | 8 ++++++++
 gcc/jit/libgccjit.c   | 8 ++++++++
 gcc/jit/libgccjit.h   | 4 ++++
 gcc/jit/libgccjit.map | 1 +
 5 files changed, 28 insertions(+)

diff --git a/gcc/jit/ChangeLog.jit b/gcc/jit/ChangeLog.jit
index c7b2395..6c43ce9 100644
--- a/gcc/jit/ChangeLog.jit
+++ b/gcc/jit/ChangeLog.jit
@@ -1,3 +1,10 @@
+2014-02-28  David Malcolm  <dmalcolm@redhat.com>
+
+	* libgccjit.h (gcc_jit_block_get_function): New.
+	* libgccjit.map (gcc_jit_block_get_function): New.
+	* libgccjit++.h (gccjit::block::get_function): New method.
+	* libgccjit.c (gcc_jit_block_get_function): New.
+
 2014-02-27  David Malcolm  <dmalcolm@redhat.com>
 
 	* libgccjit.h (gcc_jit_label): Delete in favor of...
diff --git a/gcc/jit/libgccjit++.h b/gcc/jit/libgccjit++.h
index a8801a3..7c1c3be 100644
--- a/gcc/jit/libgccjit++.h
+++ b/gcc/jit/libgccjit++.h
@@ -316,6 +316,8 @@ namespace gccjit
 
     gcc_jit_block *get_inner_block () const;
 
+    function get_function () const;
+
     void add_eval (rvalue rvalue,
 		   location loc = location ());
 
@@ -1109,6 +1111,12 @@ function::new_local (type type_,
 					     name.c_str ()));
 }
 
+inline function
+block::get_function () const
+{
+  return function (gcc_jit_block_get_function ( get_inner_block ()));
+}
+
 inline void
 block::add_eval (rvalue rvalue,
 		 location loc)
diff --git a/gcc/jit/libgccjit.c b/gcc/jit/libgccjit.c
index 1146261..ce7987c 100644
--- a/gcc/jit/libgccjit.c
+++ b/gcc/jit/libgccjit.c
@@ -591,6 +591,14 @@ gcc_jit_block_as_object (gcc_jit_block *block)
   return static_cast <gcc_jit_object *> (block->as_object ());
 }
 
+gcc_jit_function *
+gcc_jit_block_get_function (gcc_jit_block *block)
+{
+  RETURN_NULL_IF_FAIL (block, NULL, "NULL block");
+
+  return static_cast <gcc_jit_function *> (block->get_function ());
+}
+
 gcc_jit_lvalue *
 gcc_jit_context_new_global (gcc_jit_context *ctxt,
 			    gcc_jit_location *loc,
diff --git a/gcc/jit/libgccjit.h b/gcc/jit/libgccjit.h
index c24fddd..f00d672 100644
--- a/gcc/jit/libgccjit.h
+++ b/gcc/jit/libgccjit.h
@@ -503,6 +503,10 @@ gcc_jit_function_new_block (gcc_jit_function *func,
 extern gcc_jit_object *
 gcc_jit_block_as_object (gcc_jit_block *block);
 
+/* Which function is this block within?  */
+extern gcc_jit_function *
+gcc_jit_block_get_function (gcc_jit_block *block);
+
 /**********************************************************************
  lvalues, rvalues and expressions.
  **********************************************************************/
diff --git a/gcc/jit/libgccjit.map b/gcc/jit/libgccjit.map
index 48fd9d2..9f6a466 100644
--- a/gcc/jit/libgccjit.map
+++ b/gcc/jit/libgccjit.map
@@ -11,6 +11,7 @@
     gcc_jit_block_end_with_jump;
     gcc_jit_block_end_with_return;
     gcc_jit_block_end_with_void_return;
+    gcc_jit_block_get_function;
     gcc_jit_context_acquire;
     gcc_jit_context_compile;
     gcc_jit_context_dump_to_file;
-- 
1.7.11.7



More information about the Gcc-patches mailing list