aboutsummaryrefslogtreecommitdiff
path: root/gcc/jit/ChangeLog
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2016-05-20 19:12:49 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2016-05-20 19:12:49 +0000
commit15c671a79ca66df5b1de70dd1a0b78414fe003ef (patch)
treef210624d9cf8816cc56a0800f0429cd6e558a371 /gcc/jit/ChangeLog
parentdfbdde160f9970aea0bfc6c9d2005d911de6b593 (diff)
downloadgcc-15c671a79ca66df5b1de70dd1a0b78414fe003ef.zip
gcc-15c671a79ca66df5b1de70dd1a0b78414fe003ef.tar.gz
gcc-15c671a79ca66df5b1de70dd1a0b78414fe003ef.tar.bz2
jit: implement gcc_jit_rvalue_set_bool_require_tail_call
This implements the libgccjit support for must-tail-call via a new: gcc_jit_rvalue_set_bool_require_tail_call API entrypoint. (I didn't implement a wrapper for this within the C++ bindings) gcc/jit/ChangeLog: * docs/topics/compatibility.rst: Add LIBGCCJIT_ABI_6. * docs/topics/expressions.rst (Function calls): Add documentation of gcc_jit_rvalue_set_bool_require_tail_call. * docs/_build/texinfo/libgccjit.texi: Regenerate. * jit-common.h (gcc::jit::recording::base_call): Add forward decl. * jit-playback.c: Within namespace gcc::jit::playback... (context::build_call) Add "require_tail_call" param and use it to set CALL_EXPR_MUST_TAIL_CALL. (context::new_call): Add "require_tail_call" param. (context::new_call_through_ptr): Likewise. * jit-playback.h: Within namespace gcc::jit::playback... (context::new_call: Add "require_tail_call" param. (context::new_call_through_ptr): Likewise. (context::build_call): Likewise. * jit-recording.c: Within namespace gcc::jit::recording... (base_call::base_call): New constructor. (base_call::write_reproducer_tail_call): New method. (call::call): Update for inheritance from base_call. (call::replay_into): Provide m_require_tail_call to call to new_call. (call::write_reproducer): Call write_reproducer_tail_call. (call_through_ptr::call_through_ptr): Update for inheritance from base_call. (call_through_ptr::replay_into): Provide m_require_tail_call to call to new_call_through_ptr. (recording::call_through_ptr::write_reproducer): Call write_reproducer_tail_call. * jit-recording.h: Within namespace gcc::jit::recording... (rvalue::dyn_cast_base_call): New virtual function. (class base_call): New subclass of class rvalue. (class call): Inherit from base_call rather than directly from rvalue, moving get_precedence and m_args to base_call. (class call_through_ptr): Likewise. * libgccjit.c (gcc_jit_rvalue_set_bool_require_tail_call): New function. * libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_rvalue_set_bool_require_tail_call): New macro. (gcc_jit_rvalue_set_bool_require_tail_call): New function. * libgccjit.map (LIBGCCJIT_ABI_6): New. (gcc_jit_rvalue_set_bool_require_tail_call): Add. gcc/testsuite/ChangeLog: * jit.dg/all-non-failing-tests.h: Add test-factorial-must-tail-call.c. * jit.dg/test-error-impossible-must-tail-call.c: New test case. * jit.dg/test-factorial-must-tail-call.c: New test case. From-SVN: r236531
Diffstat (limited to 'gcc/jit/ChangeLog')
-rw-r--r--gcc/jit/ChangeLog44
1 files changed, 44 insertions, 0 deletions
diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog
index f9320ec..1c3e1fc 100644
--- a/gcc/jit/ChangeLog
+++ b/gcc/jit/ChangeLog
@@ -1,3 +1,47 @@
+2016-05-20 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/topics/compatibility.rst: Add LIBGCCJIT_ABI_6.
+ * docs/topics/expressions.rst (Function calls): Add documentation
+ of gcc_jit_rvalue_set_bool_require_tail_call.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+ * jit-common.h (gcc::jit::recording::base_call): Add forward decl.
+ * jit-playback.c: Within namespace gcc::jit::playback...
+ (context::build_call) Add "require_tail_call" param and use it
+ to set CALL_EXPR_MUST_TAIL_CALL.
+ (context::new_call): Add "require_tail_call" param.
+ (context::new_call_through_ptr): Likewise.
+ * jit-playback.h: Within namespace gcc::jit::playback...
+ (context::new_call: Add "require_tail_call" param.
+ (context::new_call_through_ptr): Likewise.
+ (context::build_call): Likewise.
+ * jit-recording.c: Within namespace gcc::jit::recording...
+ (base_call::base_call): New constructor.
+ (base_call::write_reproducer_tail_call): New method.
+ (call::call): Update for inheritance from base_call.
+ (call::replay_into): Provide m_require_tail_call to call
+ to new_call.
+ (call::write_reproducer): Call write_reproducer_tail_call.
+ (call_through_ptr::call_through_ptr): Update for inheritance from
+ base_call.
+ (call_through_ptr::replay_into): Provide m_require_tail_call to call
+ to new_call_through_ptr.
+ (recording::call_through_ptr::write_reproducer): Call
+ write_reproducer_tail_call.
+ * jit-recording.h: Within namespace gcc::jit::recording...
+ (rvalue::dyn_cast_base_call): New virtual function.
+ (class base_call): New subclass of class rvalue.
+ (class call): Inherit from base_call rather than directly from
+ rvalue, moving get_precedence and m_args to base_call.
+ (class call_through_ptr): Likewise.
+ * libgccjit.c (gcc_jit_rvalue_set_bool_require_tail_call): New
+ function.
+ * libgccjit.h
+ (LIBGCCJIT_HAVE_gcc_jit_rvalue_set_bool_require_tail_call): New
+ macro.
+ (gcc_jit_rvalue_set_bool_require_tail_call): New function.
+ * libgccjit.map (LIBGCCJIT_ABI_6): New.
+ (gcc_jit_rvalue_set_bool_require_tail_call): Add.
+
2016-05-17 David Malcolm <dmalcolm@redhat.com>
* dummy-frontend.c: Include diagnostic.h.