[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