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 <dmalc...@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 <dmalc...@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