summaryrefslogtreecommitdiff
path: root/gcc/jit/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/jit/ChangeLog')
-rw-r--r--gcc/jit/ChangeLog1440
1 files changed, 1440 insertions, 0 deletions
diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog
new file mode 100644
index 0000000000..7d0c038c98
--- /dev/null
+++ b/gcc/jit/ChangeLog
@@ -0,0 +1,1440 @@
+2015-04-22 Release Manager
+
+ * GCC 5.1.0 released.
+
+2015-04-09 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/65691
+ * docs/cp/topics/expressions.rst (Simple expressions): Fix copy
+ and paste error in description of gccjit::context::one.
+ * docs/topics/expressions.rst (Simple expressions): Likewise in
+ description of gcc_jit_context_one.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+
+2015-03-13 Uros Bizjak <ubizjak@gmail.com>
+
+ * jit-recording.c (dump::write): Also check vasprintf return value.
+ (recording::context::add_error_va): Ditto.
+ (recording::string::from_printf): Ditto.
+
+2015-03-13 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/internals/index.rst (Packaging notes): New section.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+
+2015-03-05 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/cp/intro/tutorial03.rst: Add missing arguments to
+ gccjit::block::end_with_conditional call. Add on_true/on_false
+ comments. Tweak the wording.
+ * docs/intro/tutorial03.rst: Add missing arguments to
+ gcc_jit_block_end_with_conditional call. Add some clarifying
+ comments.
+ * docs/topics/compilation.rst: Tweak the wording to avoid an
+ ambiguous use of "this".
+ * docs/topics/contexts.rst: Fix a typo.
+ * docs/topics/expressions.rst (GCC_JIT_BINARY_OP_MINUS): Remove
+ a stray backtick.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+
+2015-02-24 Thomas Schwinge <thomas@codesourcery.com>
+
+ PR libgomp/64625
+ * jit-builtins.c (DEF_FUNCTION_TYPE_VAR_8)
+ (DEF_FUNCTION_TYPE_VAR_12): Remove macros.
+ (DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros.
+ * jit-builtins.h (DEF_FUNCTION_TYPE_VAR_8)
+ (DEF_FUNCTION_TYPE_VAR_12): Remove macros.
+ (DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros.
+
+2015-02-04 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/64257
+ * docs/conf.py (html_theme): Change from 'pyramid'
+ to 'sphinxdoc'.
+
+2015-02-04 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/topics/contexts.rst (gcc_jit_context_acquire): Fix
+ typo.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+
+2015-02-03 David Malcolm <dmalcolm@redhat.com>
+
+ * jit-logging.h (gcc::jit::log_user::log): Make const.
+ * jit-recording.c (gcc::jit::recording::context::set_str_option):
+ Log the new value of the option.
+ (gcc::jit::recording::context::set_int_option): Likewise.
+ (gcc::jit::recording::context::set_bool_option): Likewise.
+ (gcc::jit::recording::context::compile): Log the value of all
+ options.
+ (gcc::jit::recording::context::compile_to_file): Likewise.
+ (gcc::jit::recording::context::log_all_options): New function.
+ (gcc::jit::recording::context::log_str_option): New function.
+ (gcc::jit::recording::context::log_int_option): New function.
+ (gcc::jit::recording::context::log_bool_option): New function.
+ * jit-recording.h (gcc::jit::recording::context::log_all_options):
+ New function.
+ (gcc::jit::recording::context::log_str_option): New function.
+ (gcc::jit::recording::context::log_int_option): New function.
+ (gcc::jit::recording::context::log_bool_option): New function.
+ * docs/internals/test-hello-world.exe.log.txt: Update for above
+ changes.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+
+2015-02-03 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/64810
+ * Make-lang.in (jit_OBJS): Add jit/jit-spec.o and gcc.o.
+ (LIBGCCJIT_FILENAME): Add EXTRA_GCC_OBJS.
+ * jit-playback.c: Include gcc.h.
+ (gcc::jit::playback::context::compile): Move mutex acquisition
+ to before the call to make_fake_args.
+ (append_arg_from_driver): New function.
+ (gcc::jit::playback::context::make_fake_args): On the first call,
+ call into driver_get_configure_time_options to get configure-time
+ default options and cache them. Add them to the args for
+ toplev::main.
+ * jit-spec.c: New source file.
+ * docs/internals/test-hello-world.exe.log.txt: Update to reflect
+ above changes.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+
+2015-02-02 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/64810
+ * dummy-frontend.c (jit_langhook_type_for_mode): Support
+ TYPE_MODE (long_long_integer_type_node).
+
+2015-01-27 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/internals/test-hello-world.exe.log.txt: Add example version
+ lines.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+ * jit-common.h (gcc::jit::dump::get_file): New accessor.
+ * jit-logging.c: Include toplev.h.
+ (gcc::jit::logger::logger): Log the GCC version.
+ * jit-recording.c: Include toplev.h.
+ (gcc:jit::recording::context::dump_reproducer_to_file): Log the
+ GCC version.
+
+2015-01-26 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/topics/compilation.rst (gcc_jit_result_get_code): Fix typo.
+ * docs/topics/contexts.rst (gcc_jit_context_get_last_error): The
+ error buffer is only valid until the next call to the context.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+ * libgccjit.h (gcc_jit_context_get_first_error): Reword the
+ comment to omit mention of compiling.
+ (gcc_jit_context_get_last_error): The error buffer is only valid
+ until the next call to the context.
+
+2015-01-26 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/64708
+ * config-lang.in (compilers): Drop "libgccjit.so".
+
+2015-01-23 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/64721
+ * jit-playback.c (gcc::jit::playback::context::compile): Construct
+ toplev instances with init_signals=false.
+
+2015-01-19 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/cp/topics/results.rst: Rename to...
+ * docs/cp/topics/compilation.rst: ...this, and add section on
+ ahead-of-time compilation.
+ * docs/cp/topics/index.rst: Update for renaming of results.rst
+ to compilation.rst.
+ * docs/examples/emit-alphabet.bf: New file, a sample "brainf"
+ script.
+ * docs/examples/tut05-bf.c: New file, implementing a compiler
+ for "brainf".
+ * docs/internals/test-hello-world.exe.log.txt: Update to reflect
+ changes to logger output.
+ * docs/intro/index.rst: Add tutorial05.rst
+ * docs/intro/tutorial05.rst: New file.
+ * docs/topics/results.rst: Rename to...
+ * docs/topics/compilation.rst: ...this, and add section on
+ ahead-of-time compilation.
+ * docs/topics/index.rst: Update for renaming of results.rst to
+ compilation.rst.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+ * jit-playback.c (gcc::jit::playback::context::compile): Convert
+ return type from result * to void. Move the code to convert to
+ dso and dlopen the result to a new pure virtual "postprocess"
+ method.
+ (gcc::jit::playback::compile_to_memory::compile_to_memory): New
+ function.
+ (gcc::jit::playback::compile_to_memory::postprocess): New
+ function, based on playback::context::compile.
+ (gcc::jit::playback::compile_to_file::compile_to_file): New
+ function.
+ (gcc::jit::playback::compile_to_file::postprocess): New function.
+ (gcc::jit::playback::compile_to_file::copy_file): New function.
+ (gcc::jit::playback::context::convert_to_dso): Move internals
+ to...
+ (gcc::jit::playback::context::invoke_driver): New method. Add
+ "-shared" and "-c" options to driver's argv as needed.
+ * jit-playback.h: Include "timevar.h".
+ (gcc::jit::playback::context::compile): Convert return type from
+ result * to void.
+ (gcc::jit::playback::context::postprocess): New pure virtual
+ function, making this an abstract base class.
+ (gcc::jit::playback::context::get_tempdir): New accessor.
+ (gcc::jit::playback::context::invoke_driver): New function.
+ (class gcc::jit::playback::compile_to_memory): New subclass of
+ playback::context.
+ (class gcc::jit::playback::compile_to_file): Likewise.
+ * jit-recording.c (gcc::jit::recording::context::compile): Use a
+ playback::compile_to_memory, and extract its result.
+ (gcc::jit::recording::context::compile_to_file): New function.
+ * jit-recording.h (gcc::jit::recording::context::compile_to_file):
+ New function.
+ * libgccjit++.h (gccjit::context::compile_to_file): New method.
+ * libgccjit.c (gcc_jit_context_compile): Update log message to
+ clarify that this is an in-memory compile.
+ (gcc_jit_context_compile_to_file): New function.
+ * libgccjit.h (gcc_jit_context): Clarify that you can compile
+ a context more than once, and that you can compile to a file
+ as well as to memory.
+ (gcc_jit_result): Clarify that this is the result of an
+ in-memory compilation.
+ (gcc_jit_context_compile): Clarify that you can compile, and that
+ this is an in-memory compilation.
+ (enum gcc_jit_output_kind): New enum.
+ (gcc_jit_context_compile_to_file): New function.
+ (gcc_jit_context_enable_dump): Clarify comment to cover both forms
+ of compilation.
+ * libgccjit.map (gcc_jit_context_compile_to_file): New API
+ entrypoint.
+ * notes.txt: Update to show the playback::context::postprocess
+ virtual function.
+
+2015-01-19 David Malcolm <dmalcolm@redhat.com>
+
+ * jit-recording.c
+ (gcc::jit::recording::memento_of_new_string_literal::make_debug_string):
+ Add missing format string.
+
+2015-01-16 David Malcolm <dmalcolm@redhat.com>
+
+ * Make-lang.in (lang_checks_parallelized): Add "check-jit".
+ (check_jit_parallelize): Set this to an arbitrary value (10).
+
+2015-01-16 Jakub Jelinek <jakub@redhat.com>
+
+ * jit-builtins.h (DEF_FUNCTION_TYPE_VAR_5): Fix spelling of
+ last argument.
+ (DEF_FUNCTION_TYPE_VAR_8, DEF_FUNCTION_TYPE_VAR_12): Define and
+ undef afterwards.
+ * jit-builtins.c (DEF_FUNCTION_TYPE_VAR_8, DEF_FUNCTION_TYPE_VAR_12):
+ Likewise.
+
+2015-01-15 Richard Sandiford <richard.sandiford@arm.com>
+
+ Update copyright years in docs/.
+
+2015-01-15 David Malcolm <dmalcolm@redhat.com>
+
+ * libgccjit.c (gcc_jit_block_add_assignment_op): Check that the
+ lvalue and the rvalue are of compatible type.
+
+2015-01-13 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/cp/topics/contexts.rst (Debugging): Add
+ gccjit::context::dump_reproducer_to_file.
+ * docs/internals/index.rst (Design notes): New section,
+ discussing input validation and
+ gcc_jit_context_dump_reproducer_to_file.
+ * docs/topics/contexts.rst (Debugging): Add
+ gcc_jit_context_dump_reproducer_to_file.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+ * jit-common.h (gcc::jit::dump::get_context): New accessor.
+ * jit-recording.c: Include "hash-map.h".
+ Within namespace ::gcc::jit...
+ (dump::write): Flush each line.
+ (dump::make_location): Pass false for new param "created_by_user".
+ (class allocator): New class.
+ (allocator::~allocator): New function.
+ (allocator::xstrdup_printf): New function.
+ (allocator::xstrdup_printf_va): New function.
+ (class reproducer): New subclass of dump.
+ (reproducer::reproducer): New function.
+ (reproducer::write_params): New function.
+ (reproducer::write_args): New function.
+ (reproducer::make_identifier): New function.
+ (reproducer::make_tmp_identifier): New function.
+ (reproducer::get_identifier): New pair of functions.
+ (reproducer::get_identifier_as_rvalue): New function.
+ (reproducer::get_identifier_as_lvalue): New function.
+ (reproducer::get_identifier_as_type): New function.
+ (reproducer::xstrdup_printf): New function.
+ (recording::context::context): Initialize m_toplevel_ctxt.
+ (recording::context::new_location): Add param created_by_user.
+ (str_option_reproducer_strings): New table of strings.
+ (int_option_reproducer_strings): Likewise.
+ (bool_option_reproducer_strings): Likewise.
+ (get_type_enum_strings): Likewise.
+ (names_of_function_kinds): Likewise.
+ (global_kind_reproducer_strings): Likewise.
+ (unary_op_reproducer_strings): Likewise.
+ (binary_op_reproducer_strings): Likewise.
+ (comparison_reproducer_strings): Likewise.
+ Within namespace ::gcc::jit::recording::...
+ (context::dump_reproducer_to_file): New function.
+ (string::write_reproducer): Likewise.
+ (location::write_reproducer): Likewise.
+ (type::access_as_type): Likewise.
+ (memento_of_get_type::write_reproducer): Likewise.
+ (memento_of_get_pointer::write_reproducer): Likewise.
+ (memento_of_get_const::write_reproducer): Likewise.
+ (memento_of_get_volatile::write_reproducer): Likewise.
+ (array_type::write_reproducer): Likewise.
+ (function_type::write_reproducer): Likewise.
+ (function_type::write_deferred_reproducer): Likewise.
+ (field::write_reproducer): Likewise.
+ (struct_::access_as_type): Likewise.
+ (struct_::write_reproducer): Likewise.
+ (union_::write_reproducer): Likewise.
+ (fields::write_reproducer): Likewise.
+ (rvalue::access_as_rvalue): Likewise.
+ (lvalue::access_as_rvalue): Likewise.
+ (lvalue::access_as_lvalue): Likewise.
+ (param::access_as_rvalue): Likewise.
+ (param::access_as_lvalue): Likewise.
+ (param::write_reproducer): Likewise.
+ (function::write_reproducer): Likewise.
+ (block::write_reproducer): Likewise.
+ (global::write_reproducer): Likewise.
+ (memento_of_new_rvalue_from_const <int>::write_reproducer):
+ Likewise.
+ (memento_of_new_rvalue_from_const <long>::write_reproducer):
+ Likewise.
+ (memento_of_new_rvalue_from_const <double>::write_reproducer):
+ Likewise.
+ (memento_of_new_rvalue_from_const <void *>::write_reproducer):
+ Likewise.
+ (memento_of_new_string_literal::write_reproducer): Likewise.
+ (unary_op::write_reproducer): Likewise.
+ (binary_op::write_reproducer): Likewise.
+ (comparison::write_reproducer): Likewise.
+ (cast::write_reproducer): Likewise.
+ (call::write_reproducer): Likewise.
+ (call_through_ptr::write_reproducer): Likewise.
+ (array_access::write_reproducer): Likewise.
+ (access_field_of_lvalue::write_reproducer): Likewise.
+ (access_field_rvalue::write_reproducer): Likewise.
+ (dereference_field_rvalue::write_reproducer): Likewise.
+ (dereference_rvalue::write_reproducer): Likewise.
+ (get_address_of_lvalue::write_reproducer): Likewise.
+ (local::write_reproducer): Likewise.
+ (eval::write_reproducer): Likewise.
+ (assignment::write_reproducer): Likewise.
+ (assignment_op::write_reproducer): Likewise.
+ (comment::write_reproducer): Likewise.
+ (conditional::write_reproducer): Likewise.
+ (jump::write_reproducer): Likewise.
+ (return_::write_reproducer): Likewise.
+ * jit-recording.h (gcc::jit::reproducer): New forward declararion.
+ Within namespace ::gcc::jit::recording::...
+ (context::new_location): Add "created_by_user" param.
+ (context::dump_reproducer_to_file): New method.
+ (context::m_toplevel_ctxt): New field.
+ (memento::write_reproducer): New pure virtual function.
+ (memento::dyn_cast_location): New virtual function.
+ (string::write_reproducer):
+ (location::location): Add "created_by_user" param.
+ (location::dyn_cast_location): New function.
+ (location::created_by_user): New accessor.
+ (location::write_reproducer): New function.
+ (location::m_created_by_user): New field.
+ (type::access_as_type): New virtual function.
+ (location::write_reproducer): Likewise.
+ (type::access_as_type): Likewise.
+ (memento_of_get_type::write_reproducer): Likewise.
+ (memento_of_get_pointer::write_reproducer): Likewise.
+ (memento_of_get_const::write_reproducer): Likewise.
+ (memento_of_get_volatile::write_reproducer): Likewise.
+ (array_type::write_reproducer): Likewise.
+ (function_type::write_reproducer): Likewise.
+ (function_type::write_deferred_reproducer): Likewise.
+ (field::write_reproducer): Likewise.
+ (struct_::access_as_type): Likewise.
+ (struct_::write_reproducer): Likewise.
+ (union_::write_reproducer): Likewise.
+ (union_::m_fields): Remove stray unused field.
+ (fields::length): New accessor.
+ (fields::get_field): New accessor.
+ (fields::write_reproducer): New function.
+ (rvalue::access_as_rvalue): Likewise.
+ (lvalue::access_as_rvalue): Likewise.
+ (lvalue::access_as_lvalue): Likewise.
+ (param::access_as_rvalue): Likewise.
+ (param::access_as_lvalue): Likewise.
+ (param::write_reproducer): Likewise.
+ (function::write_reproducer): Likewise.
+ (block::write_reproducer): Likewise.
+ (global::write_reproducer): Likewise.
+ (memento_of_new_rvalue_from_const <HOST_TYPE>::write_reproducer):
+ Likewise.
+ (memento_of_new_string_literal::write_reproducer): Likewise.
+ (unary_op::write_reproducer): Likewise.
+ (binary_op::write_reproducer): Likewise.
+ (comparison::write_reproducer): Likewise.
+ (cast::write_reproducer): Likewise.
+ (call::write_reproducer): Likewise.
+ (call_through_ptr::write_reproducer): Likewise.
+ (array_access::write_reproducer): Likewise.
+ (access_field_of_lvalue::write_reproducer): Likewise.
+ (access_field_rvalue::write_reproducer): Likewise.
+ (dereference_field_rvalue::write_reproducer): Likewise.
+ (dereference_rvalue::write_reproducer): Likewise.
+ (get_address_of_lvalue::write_reproducer): Likewise.
+ (local::write_reproducer): Likewise.
+ (eval::write_reproducer): Likewise.
+ (assignment::write_reproducer): Likewise.
+ (assignment_op::write_reproducer): Likewise.
+ (comment::write_reproducer): Likewise.
+ (conditional::write_reproducer): Likewise.
+ (jump::write_reproducer): Likewise.
+ (return_::write_reproducer): Likewise.
+ * libgccjit++.h (gccjit::context::dump_reproducer_to_file): New.
+ * libgccjit.c (gcc_jit_context_new_location): Pass "true" as
+ param "created_by_user".
+ (gcc_jit_context_dump_reproducer_to_file): New API entrypoint.
+ * libgccjit.h (gcc_jit_context_dump_reproducer_to_file): New API
+ entrypoint.
+ * libgccjit.map (gcc_jit_context_dump_reproducer_to_file): New API
+ entrypoint.
+
+2015-01-12 David Malcolm <dmalcolm@redhat.com>
+
+ * jit-recording.c (class gcc::jit::rvalue_usage_validator): New.
+ (gcc::jit::rvalue_usage_validator::rvalue_usage_validator): New
+ ctor.
+ (gcc::jit::rvalue_usage_validator::visit): New function.
+ (gcc::jit::recording::rvalue::verify_valid_within_stmt): New
+ function.
+ (gcc::jit::recording::rvalue::set_scope): New function.
+ (gcc::jit::recording::function::function): Call set_scope on each
+ param, issuing errors for any params that already have a function.
+ (gcc::jit::recording::block::add_eval): Return the new statement;
+ update the comment given that some error-checking now happens after
+ this returns.
+ (gcc::jit::recording::block::add_assignment): Likewise.
+ (gcc::jit::recording::block::add_assignment_op): Likewise.
+ (gcc::jit::recording::block::add_comment): Likewise.
+ (gcc::jit::recording::block::end_with_conditional): Likewise.
+ (gcc::jit::recording::block::end_with_jump): Likewise.
+ (gcc::jit::recording::block::end_with_return): Likewise.
+ (gcc::jit::recording::block::validate): Add a comment.
+ (gcc::jit::recording::unary_op::visit_children): New function.
+ (gcc::jit::recording::binary_op::visit_children): New function.
+ (gcc::jit::recording::comparison::visit_children): New function.
+ (gcc::jit::recording::cast::visit_children): New function.
+ (gcc::jit::recording::call::visit_children): New function.
+ (gcc::jit::recording::call_through_ptr::visit_children): New function.
+ (gcc::jit::recording::array_access::visit_children): New function.
+ (gcc::jit::recording::access_field_of_lvalue::visit_children): New
+ function.
+ (gcc::jit::recording::access_field_rvalue::visit_children): New
+ function.
+ (gcc::jit::recording::dereference_field_rvalue::visit_children):
+ New function.
+ (gcc::jit::recording::dereference_rvalue::visit_children): New
+ function.
+ (gcc::jit::recording::get_address_of_lvalue::visit_children): New
+ function.
+ * jit-recording.h: Within namespace gcc::jit::recording...
+ (class rvalue_visitor): New.
+ (rvalue::rvalue): Initialize m_scope.
+ (rvalue::get_loc): New accessor.
+ (rvalue::verify_valid_within_stmt): New function.
+ (rvalue::visit_children): New pure virtual function.
+ (rvalue::set_scope): New function.
+ (rvalue::get_scope): New function.
+ (rvalue::dyn_cast_param): New function.
+ (rvalue::m_scope): New field.
+ (param::visit_children): New empty function.
+ (param::dyn_cast_param): New function.
+ (function::get_loc): New function.
+ (block::add_eval): Return the new statement.
+ (block::add_assignment): Likewise.
+ (block::add_assignment_op): Likewise.
+ (block::add_comment): Likewise.
+ (block::end_with_conditional): Likewise.
+ (block::end_with_jump): Likewise.
+ (block::end_with_return): Likewise.
+ (global::visit_children): New function.
+ (memento_of_new_rvalue_from_const<HOST_TYPE>::visit_children):
+ New function.
+ (memento_of_new_string_literal::visit_children): New function.
+ (unary_op::visit_children): New function.
+ (binary_op::visit_children): New function.
+ (comparison::visit_children): New function.
+ (cast::visit_children): New function.
+ (call::visit_children): New function.
+ (call_through_ptr::visit_children): New function.
+ (array_access::visit_children): New function.
+ (access_field_of_lvalue::visit_children): New function.
+ (access_field_rvalue::visit_children): New function.
+ (dereference_field_rvalue::visit_children): New function.
+ (dereference_rvalue::visit_children): New function.
+ (get_address_of_lvalue::visit_children): New function.
+ (local::local): Call set_scope.
+ (local::visit_children): New function.
+ (statement::get_block): Make public.
+ * libgccjit.c (RETURN_VAL_IF_FAIL_PRINTF5): New macro.
+ (RETURN_NULL_IF_FAIL_PRINTF5): New macro.
+ (gcc_jit_context_new_function): Verify that each param has
+ not yet been used for creating another function.
+ (gcc_jit_block_add_eval): After creating the stmt, verify
+ that the rvalue expression tree is valid to use within it.
+ (gcc_jit_block_add_assignment): Likewise for the lvalue and
+ rvalue expression trees.
+ (gcc_jit_block_add_assignment_op): Likewise.
+ (gcc_jit_block_end_with_conditional): Likewise for the boolval
+ expression tree.
+ (gcc_jit_block_end_with_return): Likewise for the rvalue
+ expression tree.
+ (gcc_jit_block_end_with_void_return): Remove return of "void",
+ now that block::end_with_return is now non-void.
+
+2015-01-12 David Malcolm <dmalcolm@redhat.com>
+
+ * jit-playback.c (gcc::jit::playback::context::read_dump_file):
+ Add missing fclose on error-handling path.
+
+2015-01-12 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/cp/topics/expressions.rst (Global variables): Add
+ enum gcc_jit_global_kind param to gccjit::context::new_global.
+ * docs/topics/expressions.rst (Global variables): Likewise.
+ Document the new enum.
+ * docs/topics/results.rst (Compilation results): Document
+ globals-handling.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+ * dummy-frontend.c (jit_langhook_write_globals): Call into the
+ playback context's write_global_decls_1 and write_global_decls_2
+ before and after calling symtab->finalize_compilation_unit ().
+ * jit-playback.c: Include "debug.h".
+ (gcc::jit::playback::context::new_global): Add "kind" param and
+ use it to set TREE_PUBLIC, TREE_STATIC and DECL_EXTERNAL on the
+ underlying VAR_DECL. Call varpool_node::get_create on the
+ VAR_DECL, and add it to m_globals.
+ (gcc::jit::playback::context::write_global_decls_1): New function.
+ (gcc::jit::playback::context::write_global_decls_2): New function.
+ * jit-playback.h (gcc::jit::playback::context::context): Call
+ create on m_globals.
+ (gcc::jit::playback::context::new_global): Add "kind" param.
+ (gcc::jit::playback::context::write_global_decls_1): New function.
+ (gcc::jit::playback::context::write_global_decls_2): New function.
+ (gcc::jit::playback::context::m_globals): New field.
+ * jit-recording.c (gcc::jit::recording::context::context):
+ Initialize m_globals.
+ (gcc::jit::recording::context::new_global): Add param "kind".
+ Add the new global to m_globals.
+ (gcc::jit::recording::context::dump_to_file): Dump the globals.
+ (gcc::jit::recording::global::replay_into): Add field m_kind.
+ (gcc::jit::recording::global::write_to_dump): New override.
+ * jit-recording.h (gcc::jit::recording::context::new_global): Add
+ param "kind".
+ (gcc::jit::recording::context::m_globals): New field.
+ (gcc::jit::recording::global::global): Add param kind.
+ (gcc::jit::recording::global::write_to_dump): New override.
+ (gcc::jit::recording::global::m_kind): New field.
+ * jit-result.c (gcc::jit::result::get_global): New function.
+ * jit-result.h (gcc::jit::result::get_global): New function.
+ * libgccjit++.h (gccjit::context::new_global): Add "kind" param.
+ * libgccjit.c (gcc_jit_context_new_global): Likewise.
+ (gcc_jit_result_get_global): New API entrypoint.
+ * libgccjit.h (gcc_jit_result_get_global): New API entrypoint.
+ (enum gcc_jit_global_kind): New enum.
+ (gcc_jit_context_new_global): API change: add "kind" param.
+ * libgccjit.map (gcc_jit_result_get_global): New symbol.
+
+2015-01-09 David Malcolm <dmalcolm@redhat.com>
+
+ * dummy-frontend.c: Include "fixed-value.h", "alias.h", "flags.h",
+ "symtab.h", "inchash.h". Move include of "hash-set.h" much
+ earlier.
+ * jit-builtins.c: Remove redundant includes of "opts.h" and
+ "tree.h".
+ * jit-common.h: Include "hash-set.h", "input.h", "vec.h",
+ "double-int.h", "alias.h", "flags.h", "symtab.h", "inchash.h".
+ * jit-playback.c: Include "hashtab.h", "machmode.h", "input.h",
+ "statistics.h", "vec.h", "double-int.h", "real.h",
+ "fixed-value.h", "alias.h", "flags.h", "symtab.h", "tree-core.h",
+ "inchash.h", "fold-const.h". Move include of "hash-set.h" to
+ earlier.
+ * jit-recording.c: Remove redundant includes of "opts.h" and
+ "tree.h".
+
+2015-01-09 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/cp/topics/expressions.rst (Simple expressions): Use
+ ":c:type:" for C types. Document new overload of
+ gcc::jit::context::new_rvalue.
+ * docs/topics/expressions.rst (Simple expressions): Use
+ ":c:type:" for C types. Document new entrypoint
+ gcc_jit_context_new_rvalue_from_long.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+ * jit-playback.c: Within namespace gcc::jit::playback...
+ (context::new_rvalue_from_int): Eliminate in favor of...
+ (context::new_rvalue_from_const <int>): ...this.
+ (context::new_rvalue_from_double): Eliminate in favor of...
+ (context::new_rvalue_from_const <double>): ...this.
+ (context::new_rvalue_from_const <long>): New.
+ (context::new_rvalue_from_ptr): Eliminate in favor of...
+ (context::new_rvalue_from_const <void *>): ...this.
+ * jit-playback.h: Within namespace gcc::jit::playback...
+ (context::new_rvalue_from_int): Eliminate in favor of...
+ (context::new_rvalue_from_const <HOST_TYPE>): ...this.
+ (context::new_rvalue_from_double): Likewise.
+ (context::new_rvalue_from_ptr): Likewise.
+ * jit-recording.c: Within namespace gcc::jit::recording...
+ (context::new_rvalue_from_int): Eliminate.
+ (context::new_rvalue_from_double): Likewise.
+ (context::new_rvalue_from_ptr): Likewise.
+ (class memento_of_new_rvalue_from_const <int>):
+ Add explicit specialization.
+ (class memento_of_new_rvalue_from_const <long>):
+ Likewise.
+ (class memento_of_new_rvalue_from_const <double>):
+ Likewise.
+ (class memento_of_new_rvalue_from_const <void *>):
+ Likewise.
+ (memento_of_new_rvalue_from_int::replay_into):
+ Generalize into...
+ (memento_of_new_rvalue_from_const <HOST_TYPE>::replay_into):
+ ...this...
+ (memento_of_new_rvalue_from_double::replay_into):
+ ...allowing this...
+ (memento_of_new_rvalue_from_ptr::replay_into):
+ ...and this to be deleted.
+ (memento_of_new_rvalue_from_int::make_debug_string):
+ Convert to...
+ (memento_of_new_rvalue_from_const <int>::make_debug_string):
+ ...this.
+ (memento_of_new_rvalue_from_double::make_debug_string):
+ Convert to...
+ (memento_of_new_rvalue_from_const <double>::make_debug_string):
+ ...this.
+ (memento_of_new_rvalue_from_ptr::make_debug_string)
+ Convert to...
+ (memento_of_new_rvalue_from_const <void *>::make_debug_string):
+ ...this.
+ (memento_of_new_rvalue_from_const <long>::make_debug_string):
+ New function.
+ * jit-recording.h: Within namespace gcc::jit::recording...
+ (context::new_rvalue_from_int): Eliminate.
+ (context::new_rvalue_from_double): Likewise.
+ (context::new_rvalue_from_ptr): Likewise, all in favor of...
+ (context::new_rvalue_from_const <HOST_TYPE>): New family of
+ methods.
+ (class memento_of_new_rvalue_from_int): Eliminate.
+ (class memento_of_new_rvalue_from_double): Likewise.
+ (class memento_of_new_rvalue_from_ptr): Likewise.
+ (class memento_of_new_rvalue_from_const <HOST_TYPE>): New family
+ of rvalue subclasses.
+ * libgccjit++.h (gccjit::context::new_rvalue): New overload, for
+ "long".
+ * libgccjit.c (gcc_jit_context_new_rvalue_from_int): Update for
+ rewriting of recording::context::new_rvalue_from_int to
+ recording::context::new_rvalue_from_const <int>.
+ (gcc_jit_context_new_rvalue_from_long): New API entrypoint.
+ (gcc_jit_context_new_rvalue_from_double): Update for
+ rewriting of recording::context::new_rvalue_from_double to
+ recording::context::new_rvalue_from_const <double>.
+ (gcc_jit_context_new_rvalue_from_ptr): Update for
+ rewriting of recording::context::new_rvalue_from_ptr to
+ recording::context::new_rvalue_from_const <void *>.
+ * libgccjit.h (gcc_jit_context_new_rvalue_from_long): New API
+ entrypoint.
+ * libgccjit.map (gcc_jit_context_new_rvalue_from_long): Likewise.
+
+2015-01-09 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/64206
+ * docs/internals/test-hello-world.exe.log.txt: Update, the log now
+ shows tempdir creation/cleanup.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+ * jit-logging.h (class gcc::jit::log_user): Add gcc::jit::tempdir
+ to the list of subclasses in the comment.
+ * jit-playback.c (gcc::jit::playback::context::context): Add a
+ comment clarifying when the tempdir gets cleaned up.
+ (gcc::jit::playback::context::compile): Pass the context's logger,
+ if any, to the tempdir.
+ (gcc::jit::playback::context::dlopen_built_dso): When creating the
+ gcc::jit::result, if GCC_JIT_BOOL_OPTION_DEBUGINFO is set, hand
+ over ownership of the tempdir to it.
+ * jit-result.c: Include "jit-tempdir.h".
+ (gcc::jit::result::result): Add tempdir param, saving it as
+ m_tempdir.
+ (gcc::jit::result::~result): Delete m_tempdir.
+ * jit-result.h (gcc::jit::result::result): Add tempdir param.
+ (gcc::jit::result::m_tempdir): New field.
+ * jit-tempdir.c (gcc::jit::tempdir::tempdir): Add logger param;
+ add JIT_LOG_SCOPE.
+ (gcc::jit::tempdir::create): Add JIT_LOG_SCOPE to log entry/exit,
+ and log m_path_template and m_path_tempdir.
+ (gcc::jit::tempdir::~tempdir): Add JIT_LOG_SCOPE to log
+ entry/exit, and log the unlink and rmdir calls.
+ * jit-tempdir.h: Include "jit-logging.h".
+ (class gcc::jit::tempdir): Make this be a subclass of log_user.
+ (gcc::jit::tempdir::tempdir): Add logger param.
+ * notes.txt: Update to show the two possible places where the
+ tempdir can be cleaned up.
+
+2015-01-08 David Malcolm <dmalcolm@redhat.com>
+
+ * libgccjit.h (struct gcc_jit_context): Rewrite the descriptive
+ comment.
+
+2015-01-08 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/topics/contexts.rst (Error-handling): Document new
+ entrypoint gcc_jit_context_get_last_error.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+ * jit-recording.c (gcc::jit::recording::context::context):
+ Initialize new fields "m_last_error_str" and
+ "m_owns_last_error_str".
+ (gcc::jit::recording::context::~context): Clean up
+ m_last_error_str, if needed.
+ (gcc::jit::recording::context::add_error_va): Update
+ m_last_error_str and m_owns_last_error_str, freeing the old
+ value if appropriate.
+ (gcc::jit::recording::context::get_last_error): New function.
+ * jit-recording.h (gcc::jit::recording::context::get_last_error):
+ New function.
+ (gcc::jit::recording::context): New fields m_last_error_str and
+ m_owns_last_error_str.
+ * libgccjit.c (gcc_jit_context_get_last_error): New function.
+ * libgccjit.h (gcc_jit_context_get_last_error): New declaration.
+ * libgccjit.map (gcc_jit_context_get_last_error): New function.
+
+2015-01-08 David Malcolm <dmalcolm@redhat.com>
+
+ * Make-lang.in (jit_OBJS): Add jit/jit-logging.o.
+ * docs/internals/index.rst (Overview of code structure): Mention
+ gcc_jit_context_set_logfile, and embed the example logfile.
+ * docs/internals/test-hello-world.exe.log.txt: New file: example
+ of a logfile.
+ * docs/topics/contexts.rst (Debugging): Add documentation
+ for gcc_jit_context_set_logfile.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+ * dummy-frontend.c: Include "jit-logging.h".
+ (jit_langhook_init): Assert that there is an active playback
+ context. If it has a logger, log entry/exit to this function.
+ (jit_langhook_write_globals): Likewise.
+ * jit-common.h (gcc::jit::logger): New forward declaration.
+ * jit-logging.c: New file.
+ * jit-logging.h: New file.
+ * jit-playback.c: Include "jit-logging.h".
+ (gcc::jit::playback::context::context): Initialize the log_user
+ base class from the recording context's logger (if any). Use
+ JIT_LOG_SCOPE to log entry/exit from the function body.
+ (gcc::jit::playback::context::~context): Use JIT_LOG_SCOPE to
+ log entry/exit from the function body.
+ (gcc::jit::playback::build_stmt_list): Likewise.
+ (gcc::jit::playback::function::postprocess): Likewise.
+ (gcc::jit::playback::context::compile): Likewise. Log the
+ entry/exit to toplev::main and toplev::finalize. Log the
+ fake argv passed to toplev::main.
+ (gcc::jit::playback::context::acquire_mutex): Use JIT_LOG_SCOPE to
+ log entry/exit from the function body.
+ (gcc::jit::playback::context::release_mutex): Likewise.
+ (gcc::jit::playback::context::make_fake_args): Likewise.
+ (gcc::jit::playback::context::extract_any_requested_dumps):
+ Likewise.
+ (gcc::jit::playback::context::convert_to_dso): Likewise. Also,
+ log the arguments that the driver is invoked with.
+ (gcc::jit::playback::context::dlopen_built_dso): Likewise. Pass
+ the logger to the result object.
+ (gcc::jit::playback::context::replay): Use JIT_LOG_SCOPE to
+ log entry/exit from the function body.
+ (gcc::jit::playback::context::dump_generated_code): Likewise.
+ (gcc::jit::playback::context::handle_locations): Likewise.
+ * jit-playback.h (gcc::jit::playback::context): Make this be
+ a subclass of gcc::jit::log_user.
+ * jit-recording.c: Include "jit-logging.h".
+ (gcc::jit::recording::context::context: Initialize the logger to
+ NULL for root contexts, or to the parent's logger for child
+ contexts.
+ (gcc::jit::recording::context::~context): Use JIT_LOG_SCOPE to
+ log entry/exit from the function body.
+ (gcc::jit::recording::context::replay_into): Likewise.
+ (gcc::jit::recording::context::disassociate_from_playback):
+ Likewise.
+ (gcc::jit::recording::context::compile): Likewise.
+ (recording::context::add_error_va): Likewise. Also, log the
+ error.
+ (gcc::jit::recording::context::validate): Use JIT_LOG_SCOPE to
+ log entry/exit from the function body.
+ * jit-recording.h: Include "jit-logging.h".
+ (gcc::jit::recording::context): Make this be a subclass of
+ gcc::jit::log_user.
+ * jit-result.c: Include "jit-common.h" and "jit-logging.h".
+ (gcc::jit::result::result): Add logger param, recording it.
+ Use JIT_LOG_SCOPE to log entry/exit from the function body.
+ (gcc::jit::result::~result(): Use JIT_LOG_SCOPE to
+ log entry/exit from the function body.
+ (gcc::jit::result::get_code): Likewise.
+ * jit-result.h (gcc::jit::result): Make this be a subclass of
+ gcc::jit::log_user.
+ (gcc::jit::result::result): Add logger parameter.
+ * libgccjit++.h (gccjit::context::set_logfile): New function.
+ * libgccjit.c: Include "jit-logging.h".
+ (gcc_jit_context_acquire): Log the context.
+ (gcc_jit_context_release): Use JIT_LOG_FUNC to
+ log entry/exit from the function body, and log the context.
+ (gcc_jit_context_new_child_context): Likewise, logging both
+ contexts.
+ (gcc_jit_context_new_location): Use JIT_LOG_FUNC to
+ log entry/exit from the function body.
+ (gcc_jit_context_get_type): Likewise.
+ (gcc_jit_context_get_int_type): Likewise.
+ (gcc_jit_context_new_array_type): Likewise.
+ (gcc_jit_context_new_field): Likewise.
+ (gcc_jit_context_new_struct_type): Likewise.
+ (gcc_jit_context_new_opaque_struct): Likewise.
+ (gcc_jit_struct_set_fields): Likewise.
+ (gcc_jit_context_new_union_type): Likewise.
+ (gcc_jit_context_new_function_ptr_type): Likewise.
+ (gcc_jit_context_new_param): Likewise.
+ (gcc_jit_context_new_function): Likewise.
+ (gcc_jit_context_get_builtin_function): Likewise.
+ (gcc_jit_function_get_param): Likewise.
+ (gcc_jit_function_dump_to_dot): Likewise.
+ (gcc_jit_function_new_block): Likewise.
+ (gcc_jit_context_new_global): Likewise.
+ (gcc_jit_context_new_rvalue_from_int): Likewise.
+ (gcc_jit_context_zero): Likewise.
+ (gcc_jit_context_one): Likewise.
+ (gcc_jit_context_new_rvalue_from_double): Likewise.
+ (gcc_jit_context_new_rvalue_from_ptr): Likewise.
+ (gcc_jit_context_null): Likewise.
+ (gcc_jit_context_new_string_literal): Likewise.
+ (gcc_jit_context_new_unary_op): Likewise.
+ (gcc_jit_context_new_binary_op): Likewise.
+ (gcc_jit_context_new_comparison): Likewise.
+ (gcc_jit_context_new_call): Likewise.
+ (gcc_jit_context_new_call_through_ptr): Likewise.
+ (gcc_jit_context_new_cast): Likewise.
+ (gcc_jit_context_new_array_access): Likewise.
+ (gcc_jit_lvalue_access_field): Likewise.
+ (gcc_jit_rvalue_access_field): Likewise.
+ (gcc_jit_rvalue_dereference_field): Likewise.
+ (gcc_jit_rvalue_dereference): Likewise.
+ (gcc_jit_lvalue_get_address): Likewise.
+ (gcc_jit_function_new_local): Likewise.
+ (gcc_jit_block_add_eval): Likewise.
+ (gcc_jit_block_add_assignment): Likewise.
+ (gcc_jit_block_add_assignment_op): Likewise.
+ (gcc_jit_block_end_with_conditional): Likewise.
+ (gcc_jit_block_add_comment): Likewise.
+ (gcc_jit_block_end_with_jump): Likewise.
+ (gcc_jit_block_end_with_return): Likewise.
+ (gcc_jit_block_end_with_void_return): Likewise.
+ (gcc_jit_context_set_str_option): Likewise.
+ (gcc_jit_context_set_int_option): Likewise.
+ (gcc_jit_context_set_bool_option): Likewise.
+ (gcc_jit_context_enable_dump): Likewise.
+ (gcc_jit_context_compile): Likewise. Also log the context,
+ and the result.
+ (gcc_jit_context_dump_to_file): Likewise.
+ (gcc_jit_context_set_logfile): New function.
+ (gcc_jit_context_get_first_error): Use JIT_LOG_FUNC to
+ log entry/exit from the function body.
+ (gcc_jit_result_get_code): Likewise. Also log the fnname)
+ and the ptr to be returned.
+ (gcc_jit_result_release): Likewise. Also log the result.
+ * libgccjit.h: Include <stdio.h>, since we need FILE *.
+ (gcc_jit_context_set_logfile): New declaration.
+ * libgccjit.map (gcc_jit_context_set_logfile): New.
+
+2015-01-07 David Malcolm <dmalcolm@redhat.com>
+
+ * jit-recording.h (gcc::jit::recording::type::is_void): New
+ virtual function.
+ (gcc::jit::recording::memento_of_get_type::is_void): New
+ function, overriding default implementation.
+ * libgccjit.c (gcc_jit_rvalue_dereference): Verify that
+ the underlying type is not "void".
+
+2015-01-07 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/topics/expressions.rst (Unary Operations): Add
+ GCC_JIT_UNARY_OP_ABS.
+ * jit-playback.c (gcc::jit::playback::context::new_unary_op):
+ Likewise.
+ * jit-recording.c (unary_op_strings): Likewise.
+ * libgccjit.c (gcc_jit_context_new_unary_op): Update checking
+ of "op" to reflect addition of GCC_JIT_UNARY_OP_ABS.
+ * libgccjit.h (enum gcc_jit_unary_op): Add GCC_JIT_UNARY_OP_ABS.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+
+2015-01-07 David Malcolm <dmalcolm@redhat.com>
+
+ * jit-recording.h (gcc::jit::recording::memento_of_get_type): Fix
+ typo in comment.
+
+2015-01-07 David Malcolm <dmalcolm@redhat.com>
+
+ * TODO.rst (Test suite): Remove item about running C++ testcases.
+ * docs/internals/index.rst (Working on the JIT library): Add
+ "c++" to the enabled languages in the suggested "configure"
+ invocation, and add a description of why this is necessary.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+
+2015-01-07 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/internals/index.rst: Update to reflect that built
+ testcases are now test-foo.c.exe, rather than test-foo.exe.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+
+2015-01-05 Jakub Jelinek <jakub@redhat.com>
+
+ Update copyright years.
+
+2014-12-19 David Malcolm <dmalcolm@redhat.com>
+
+ * jit-playback.c (gcc::jit::playback::context::build_cast): In
+ case BOOLEAN_TYPE, don't assume that the source expression is
+ of type "int".
+
+2014-12-19 David Malcolm <dmalcolm@redhat.com>
+
+ * jit-recording.c (gcc::jit::recording::context::context): When
+ copying string options from a parent context, take a copy of the
+ underlying buffers, rather than simply copying the pointer.
+
+2014-12-19 David Malcolm <dmalcolm@redhat.com>
+
+ * jit-recording.c (gcc::jit::recording::context::set_str_option):
+ Handle NULL.
+
+2014-12-11 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/cp/topics/contexts.rst (gccjit::context::set_str_option):
+ Document new function.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+
+2014-12-10 Ulrich Drepper <drepper@gmail.com>
+
+ Minor interface cleanups of libgccjit
+ * jit-playback.c (convert_to_dso): Use auto_vec instead
+ of automatic array to build up command line.
+ * jit-recording.c (recording::context::set_str_option):
+ Make copy of the string.
+ (recording::context::~context): Free string options.
+ * jit-recording.h (recording::context): Adjust type
+ of m_str_options member.
+ * libgccjit.h: Adjust comment about
+ gcc_jit_context_set_str_option parameter being used after
+ the call.
+ Update comment now that all interfaces are copy strings
+ if necessary.
+ * libgccjit++.h (gccjit::context): Add set_str_option
+ member function.
+
+2014-12-10 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/cp/index.rst: New file.
+ * docs/cp/intro/index.rst: New file.
+ * docs/cp/intro/tutorial01.rst: New file.
+ * docs/cp/intro/tutorial02.rst: New file.
+ * docs/cp/intro/tutorial03.rst: New file.
+ * docs/cp/intro/tutorial04.rst: New file.
+ * docs/cp/topics/contexts.rst: New file.
+ * docs/cp/topics/expressions.rst: New file.
+ * docs/cp/topics/functions.rst: New file.
+ * docs/cp/topics/index.rst: New file.
+ * docs/cp/topics/locations.rst: New file.
+ * docs/cp/topics/objects.rst: New file.
+ * docs/cp/topics/results.rst: New file.
+ * docs/cp/topics/types.rst: New file.
+ * docs/examples/tut01-hello-world.cc: New file.
+ * docs/examples/tut02-square.c: Fix missing newline in output.
+ * docs/examples/tut02-square.cc: New file.
+ * docs/examples/tut03-sum-of-squares.cc: New file.
+ * docs/examples/tut04-toyvm/toyvm.cc: New file.
+ * docs/index.rst: Move summary to above the table of contents.
+ Add text about the C vs C++ APIs.
+ * docs/topics/contexts.rst: Fix a typo.
+
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+ * docs/_build/texinfo/factorial1.png: New file.
+ * docs/_build/texinfo/sum-of-squares1.png: New file.
+
+2014-12-09 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/examples/tut04-toyvm/toyvm.c (toyvm_function_compile): Move
+ logic for determine "funcname" to new function...
+ (get_function_name): ...here, adding logic to skip any leading
+ path from the filename.
+ (toyvm_function_parse): Use the filename for fn_filename, rather
+ than "name", so that the debugger can locate the source .toy
+ file.
+ (toyvm_function_parse): Don't fclose a NULL FILE *.
+
+2014-12-09 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/63854
+ * docs/internals/index.rst (Running under valgrind): New
+ subsection.
+ (docs/_build/texinfo/libgccjit.texi): Regenerate.
+
+2014-12-09 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/64206
+ * Make-lang.in (jit_OBJS): Add jit/jit-tempdir.o.
+ * jit-common.h (gcc::jit::tempdir): New forward decl.
+ * jit-playback.c: Include jit-tempdir.h.
+ (gcc::jit::playback::context::context): Initialize m_tempdir.
+ (gcc::jit::playback::context::~context): Move tempdir
+ cleanup to new file jit-tempdir.c
+ (make_tempdir_path_template): Move to new file jit-tempdir.c.
+ (gcc::jit::playback::context::compile): Move tempdir creation
+ to new tempdir object in new file jit-tempdir.c.
+ (gcc::jit::playback::context::make_fake_args): Get path from
+ tempdir object rather than from member data.
+ (gcc::jit::playback::context::convert_to_dso): Likewise.
+ (gcc::jit::playback::context::dlopen_built_dso): Likewise.
+ (gcc::jit::playback::context::dump_generated_code): Likewise.
+ (gcc::jit::playback::context::get_path_c_file): New function.
+ (gcc::jit::playback::context::get_path_s_file): New function.
+ (gcc::jit::playback::context::get_path_so_file): New function.
+ * jit-playback.h (gcc::jit::playback::context::get_path_c_file):
+ New function.
+ (gcc::jit::playback::context::get_path_s_file): New function.
+ (gcc::jit::playback::context::get_path_so_file): New function.
+ (gcc::jit::playback::context): Move fields "m_path_template",
+ "m_path_tempdir", "m_path_c_file", "m_path_s_file",
+ "m_path_so_file" to new jit::tempdir class; add field "m_tempdir".
+ * jit-tempdir.c: New file.
+ * jit-tempdir.h: New file.
+
+2014-12-09 David Malcolm <dmalcolm@redhat.com>
+
+ * jit-playback.c (gcc::jit::playback::context::compile): Acquire the
+ mutex here, immediately before using toplev, and release it here, on
+ each exit path after acquisition.
+ (jit_mutex): Move this variable here, from jit-recording.c.
+ (gcc::jit::playback::context::acquire_mutex): New function, based on
+ code in jit-recording.c.
+ (gcc::jit::playback::context::release_mutex): Likewise.
+ * jit-playback.h (gcc::jit::playback::context::acquire_mutex): New
+ function.
+ (gcc::jit::playback::context::release_mutex): New function.
+ * jit-recording.c (jit_mutex): Move this variable to jit-playback.c.
+ (gcc::jit::recording::context::compile): Move mutex-handling from
+ here into jit-playback.c's gcc::jit::playback::context::compile.
+ * notes.txt: Update to show the new locations of ACQUIRE_MUTEX
+ and RELEASE_MUTEX.
+
+2014-12-09 David Malcolm <dmalcolm@redhat.com>
+
+ * jit-playback.c (gcc::jit::playback::context::compile): Move the
+ dlopen code into...
+ (gcc::jit::playback::context::dlopen_built_dso): ...this new
+ function.
+ * jit-playback.h (gcc::jit::playback::context::dlopen_built_dso):
+ New function.
+
+2014-12-09 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/64166
+ * docs/topics/contexts.rst (Debugging): Add description of
+ gcc_jit_context_enable_dump.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+ * jit-playback.c: Include context.h.
+ (class auto_argvec): New class.
+ (auto_argvec::~auto_argvec): New function.
+ (gcc::jit::playback::context::compile): Convert fake_args to be
+ an auto_argvec, so that it can contain dynamically-allocated
+ strings. Construct a vec of all requested dumps, and pass it to
+ make_fake_args. Extract requested dumps between the calls to
+ toplev::main and toplev::finalize.
+ (gcc::jit::playback::context::make_fake_args): Convert param
+ "argvec" to be a vec <char *>, and gain a "requested_dumps"
+ param. Convert to dynamically-allocated arg strings by converting
+ ADD_ARG to take a copy of the arg, and add ADD_ARG_TAKE_OWNERSHIP
+ for args that are already a copy. Add args for all requested dumps.
+ (gcc::jit::playback::context::extract_any_requested_dumps): New
+ function.
+ (gcc::jit::playback::context::read_dump_file): New function.
+ * jit-playback.h (gcc::jit::playback::context::make_fake_args):
+ Convert param "argvec" to be a vec <char *>, and gain a
+ "requested_dumps" param.
+ (gcc::jit::playback::context::extract_any_requested_dumps): New
+ function.
+ (gcc::jit::playback::context::read_dump_file): New function.
+ * jit-recording.c (gcc::jit::recording::context::enable_dump): New
+ function.
+ (gcc::jit::recording::context::get_all_requested_dumps): New
+ function.
+ * jit-recording.h (gcc::jit::recording::requested_dump): New
+ struct.
+ (gcc::jit::recording::context::enable_dump): New function.
+ (gcc::jit::recording::context::get_all_requested_dumps): New
+ function.
+ (gcc::jit::recording::context::m_requested_dumps): New field.
+ * libgccjit.c (gcc_jit_context_enable_dump): New API entrypoint.
+ * libgccjit.h (gcc_jit_context_enable_dump): New API entrypoint.
+ * libgccjit.map (gcc_jit_context_enable_dump): New API entrypoint.
+
+2014-12-08 David Malcolm <dmalcolm@redhat.com>
+
+ * libgccjit++.h: Indent the forward declarations of the classes to
+ show the inheritance hierarchy.
+
+2014-12-08 David Malcolm <dmalcolm@redhat.com>
+
+ * notes.txt: Show the beginning and ending of
+ recording::context::compile vs playback::context::compile. Show
+ the creation and unlinking of the tempdir. Show toplev::finalize.
+ Move "RELEASE MUTEX" to the correct location. Show
+ gcc_jit_result_release, and indicate where the
+ dlopen/dlsym/dlclose occur.
+
+2014-12-01 David Malcolm <dmalcolm@redhat.com>
+
+ * docs/examples/tut02-square.c (main): Release the context
+ earlier, to show that this is possible. Update error-handling
+ to avoid a double-release of the context, and to avoid
+ releasing a NULL result.
+ * docs/intro/tutorial02.rst: Discuss gcc_jit_context_release.
+ * docs/topics/functions.rst (GCC_JIT_FUNCTION_EXPORTED): Emphasize
+ * docs/topics/results.rst (gcc_jit_result): Mention that this
+ controls the lifetimes of machine code functions.
+ (gcc_jit_result_get_code): Spell out the requirements for this
+ to succeed, and the lifetime of the result.
+ (gcc_jit_result_release): Mention that this invalidates any code
+ that was obtained from the result.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+
+2014-12-01 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/64018
+ * docs/intro/tutorial02.rst: Spell out lifetime of generated code.
+ Add description of error-handling, taken in part from...
+ * docs/topics/contexts.rst (Error-handling): Expand, and move some
+ content to tutorial02.rst.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+
+2014-12-01 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/64020
+ * docs/topics/types.rst (Standard types) Add new enum values to
+ the table of enum gcc_jit_types: GCC_JIT_TYPE_COMPLEX_FLOAT,
+ GCC_JIT_TYPE_COMPLEX_DOUBLE, GCC_JIT_TYPE_COMPLEX_LONG_DOUBLE.
+ Widen the left-hand column so that
+ GCC_JIT_TYPE_COMPLEX_LONG_DOUBLE will fit.
+ * docs/_build/texinfo/libgccjit.texi: Regenerate.
+
+ * jit-builtins.c: Include stringpool.h and jit-playback.h.
+ Move everything out of the gcc::jit::recording namespace into
+ just gcc::jit.
+ (struct builtin_data): Add fields "fnclass", "attr", and
+ "implicit_p".
+ (DEF_BUILTIN): Update macro so populate the new fields.
+ (builtins_manager::builtins_manager): Update for move out of
+ recording namespace. Initialize the m_attributes array.
+ (builtins_manager::get_builtin_function): Likewise.
+ (builtins_manager::get_builtin_function_by_id): New function.
+ (builtins_manager::make_builtin_function): Update for move out of
+ recording namespace. Add fix for PR jit/64020 by detecting
+ specific builtin ids and having them ensure that builtins for
+ other ids are created as necessary.
+ (builtins_manager::get_type): Update for move out of recording
+ namespace.
+ (builtins_manager::make_type): Likewise. Add some missing
+ #undefs.
+ (builtins_manager::make_primitive_type): Update for move out of
+ recording namespace. Implement the three BT_COMPLEX_ cases and
+ BT_DOUBLE_PTR.
+ (builtins_manager::make_fn_type): Update for move out of recording
+ namespace.
+ (builtins_manager::make_ptr_type): Likewise.
+ (builtins_manager::finish_playback): New function.
+ (builtins_manager::get_class): New function.
+ (builtins_manager::implicit_p): New function.
+ (builtins_manager::get_attrs_tree): Two new functions.
+ (builtins_manager::make_attrs_tree): New function.
+
+ * jit-builtins.h: Move everything out of the gcc::jit::recording
+ namespace into just gcc::jit.
+ (enum built_in_attribute): New.
+ (builtins_manager::builtins_manager): Update decl for namespace
+ change.
+ (builtins_manager::get_builtin_function): Likewise.
+ (builtins_manager::get_class): New.
+ (builtins_manager::implicit_p): New.
+ (builtins_manager::get_attrs_tree): Two new functions.
+ (builtins_manager::make_attrs_tree): New function.
+ (builtins_manager::finish_playback): New.
+ (builtins_manager::get_builtin_function_by_id): New.
+ (builtins_manager::make_builtin_function): Update decl for
+ namespace change.
+ (builtins_manager::get_type): Likewise.
+ (builtins_manager::make_type): Likewise.
+ (builtins_manager::make_primitive_type): Likewise.
+ (builtins_manager::make_fn_type): Likewise.
+ (builtins_manager::make_ptr_type): Likewise.
+ (builtins_manager): Likewise for fields. Add new field
+ "m_attributes".
+
+ * jit-common.h (NUM_GCC_JIT_TYPES): Update.
+ (builtins_manager): Update forward decl to reflect namespace
+ change.
+
+ * jit-playback.c: Include attribs.h and jit-builtins.h.
+ (gcc::jit::playback::context::get_tree_node_for_type): Add cases
+ for the new COMPLEX_ types.
+ (gcc::jit::playback::context::new_function): If creating a
+ builtin, set the DECL_BUILT_IN_CLASS and attributes on the fndecl,
+ and call set_builtin_decl.
+ (gcc::jit::playback::context::replay): If we have a
+ builtins_manager, call its finish_playback method when we're done.
+
+ * jit-playback.h:
+ (gcc::jit::playback::context::get_builtins_manager): New function.
+
+ * jit-recording.c
+ (gcc::jit::recording::context::get_builtins_manager): New function.
+ (gcc::jit::recording::get_builtin_function): Use
+ get_builtins_manager, in case we're a child context.
+ (gcc::jit::recording::memento_of_get_type::dereference): Add the
+ COMPLEX_ types.
+ (gcc::jit::recording::memento_of_get_type::is_int): Likewise.
+ (gcc::jit::recording::memento_of_get_type::is_float): Likewise.
+ (gcc::jit::recording::memento_of_get_type::is_bool): Likewise.
+ (get_type_strings): Likewise.
+
+ * jit-recording.h
+ (gcc::jit::recording::context::get_builtins_manager): New.
+
+ * libgccjit.h (enum gcc_jit_types): Add
+ GCC_JIT_TYPE_COMPLEX_FLOAT, GCC_JIT_TYPE_COMPLEX_DOUBLE,
+ GCC_JIT_TYPE_COMPLEX_LONG_DOUBLE.
+
+2014-12-01 David Malcolm <dmalcolm@redhat.com>
+
+ * jit-builtins.c
+ (gcc::jit::recording::builtins_manager::get_builtin_function):
+ Check for NULL return from make_builtin_function.
+ (gcc::jit::recording::builtins_manager::make_builtin_function):
+ Check for NULL return from get_type.
+
+2014-12-01 David Malcolm <dmalcolm@redhat.com>
+
+ * jit-playback.c (gcc::jit::playback::context::compile): Move DSO
+ creation code into...
+ (gcc::jit::playback::context::convert_to_dso): New function.
+ * jit-playback.h (gcc::jit::playback::context::convert_to_dso):
+ New function.
+
+2014-12-01 David Malcolm <dmalcolm@redhat.com>
+
+ * jit-playback.c (gcc::jit::playback::context::compile): Use an
+ auto_vec<const char *> rather than a const char *[20] for the
+ top-level argv, and move the logic to build it to...
+ (gcc::jit::playback::context::make_fake_args): New function.
+ * jit-playback.h (gcc::jit::playback::context::make_fake_args):
+ New function.
+
+2014-12-01 David Malcolm <dmalcolm@redhat.com>
+
+ * Make-lang.in (jit_OBJS): Add jit/jit-result.o.
+ * jit-playback.c: Include new header jit-result.h.
+ (gcc::jit::result::result): Move to new file jit-result.c.
+ (gcc::jit::result::~result): Likewise.
+ (gcc::jit::playback::result): Likewise.
+ * jit-recording.h (class gcc::jit::result): Move to new
+ header jit-result.h.
+ * jit-result.c: New file, to contain...
+ (gcc::jit::result::result): Move here from jit-playback.c,
+ removing erroneous "playback" namespace from comment.
+ (gcc::jit::result::~result): Likewise.
+ (gcc::jit::playback::result): Likewise.
+ * jit-result.h: New file, to contain...
+ (class gcc::jit::result): Move from jit-recording.h.
+ * libgccjit.c: Include jit-result.h.
+ (gcc_jit_result_get_code): Update comment to reflect move
+ of implementation.
+ (gcc_jit_result_release): Likewise.
+
+2014-12-01 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/63854
+ * docs/examples/tut04-toyvm/toyvm.c
+ (toyvm_compiled_function): New typedef.
+ (toyvm_compiled_func) Rename to...
+ (toyvm_compiled_code) ...this.
+ (struct toyvm_compiled_function): New struct.
+ (toyvm_function_compile): Return a toyvm_compiled_function *
+ rather than a toyvm_compiled_func, so that the caller can fully
+ clean things up. Free "funcname".
+ (test_script): Update for change to toyvm_function_compile.
+ Clean up the toyvm_compiled_function.
+ (main): Likewise.
+ (docs/intro/tutorial04.rst): Update to reflect the above changes,
+ and to better spell out the lifetime of the compiled code.
+
+2014-12-01 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/63854
+ * jit-builtins.c
+ (gcc::jit::recording::builtins_manager::make_fn_type): Call the
+ context's new_function_type method, rather than directly creating
+ a function_type instance.
+ * jit-recording.c
+ (gcc::jit::recording::context::new_function_type): New method,
+ adapted from part of...
+ (gcc::jit::recording::context::new_function_ptr_type): ...this.
+ Update to call new_function_type.
+ * jit-recording.h
+ (gcc::jit::recording::context::new_function_type): New method.
+
+2014-12-01 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/63969
+ * jit-playback.c: Ensure that ctxt_progname is non-NULL.
+
+2014-11-19 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/63854
+ * jit-playback.c (gcc::jit::playback::compound_type::set_fields):
+ Convert param from const vec<playback::field *> & to
+ const auto_vec<playback::field *> *.
+ (gcc::jit::playback::context::new_function_type): Convert param
+ "param_types" from vec<type *> * to const auto_vec<type *> *.
+ (gcc::jit::playback::context::new_function): Convert param
+ "params" from vec<param *> * to const auto_vec<param *> *.
+ (gcc::jit::playback::context::build_call): Convert param "args"
+ from vec<rvalue *> to const auto_vec<rvalue *> *.
+ (gcc::jit::playback::context::new_call): Likewise.
+ (gcc::jit::playback::context::new_call_through_ptr): Likewise.
+ (wrapper_finalizer): New function.
+ (gcc::jit::playback::wrapper::operator new): Call the finalizer
+ variant of ggc_internal_cleared_alloc, supplying
+ wrapper_finalizer.
+ (gcc::jit::playback::function::finalizer): New.
+ (gcc::jit::playback::block::finalizer): New.
+ (gcc::jit::playback::source_file::finalizer): New.
+ (gcc::jit::playback::source_line::finalizer): New.
+
+ * jit-playback.h
+ (gcc::jit::playback::context::new_function_type): Convert param
+ "param_types" from vec<type *> * to const auto_vec<type *> *.
+ (gcc::jit::playback::context::new_function): Convert param
+ "params" from vec<param *> * to const auto_vec<param *> *.
+ (gcc::jit::playback::context::new_call): Convert param
+ "args" from vec<rvalue *> to const auto_vec<rvalue *> *.
+ (gcc::jit::playback::context::new_call_through_ptr): Likewise.
+ (gcc::jit::playback::context::build_call): Likewise.
+ (gcc::jit::playback::context): Convert fields "m_functions",
+ "m_source_files", "m_cached_locations" from vec to auto_vec.
+ (gcc::jit::playback::wrapper::finalizer): New virtual function.
+ (gcc::jit::playback::compound_type::set_fields): Convert param fro
+ const vec<playback::field *> & to
+ const auto_vec<playback::field *> *.
+ (gcc::jit::playback::function::finalizer): New.
+ (gcc::jit::playback::block::finalizer): New.
+ (gcc::jit::playback::source_file::finalizer): New.
+ (gcc::jit::playback::source_line::finalizer): New.
+
+ * jit-recording.c
+ (gcc::jit::recording::function_type::replay_into): Convert local
+ from a vec into an auto_vec.
+ (gcc::jit::recording::fields::replay_into): Likewise.
+ (gcc::jit::recording::function::replay_into): Likewise.
+ (gcc::jit::recording::call::replay_into): Likewise.
+ (gcc::jit::recording::call_through_ptr::replay_into): Likewise.
+
+ * jit-recording.h (gcc::jit::recording::context): Convert fields
+ "m_mementos", "m_compound_types", "m_functions" from vec<> to
+ auto_vec <>.
+ (gcc::jit::recording::function_type::get_param_types): Convert
+ return type from vec<type *> to const vec<type *> &.
+ (gcc::jit::recording::function_type): Convert field
+ "m_param_types" from a vec<> to an auto_vec<>.
+ (gcc::jit::recording::fields): Likewise for field "m_fields".
+ (gcc::jit::recording::function::get_params): Convert return type
+ from vec <param *> to const vec<param *> &.
+ (gcc::jit::recording::function): Convert fields "m_params",
+ "m_locals", "m_blocks" from vec<> to auto_vec<>.
+ (gcc::jit::recording::block): Likewise for field "m_statements".
+ vec<> to auto_vec<>.
+ (gcc::jit::recording::call): Likewise for field "m_args".
+ (gcc::jit::recording::call_through_ptr): Likewise.
+
+2014-11-19 David Malcolm <dmalcolm@redhat.com>
+
+ PR jit/63854
+ * jit-recording.c (recording::function::validate): Convert
+ "worklist" from vec<> to autovec<> to fix a leak.
+
+2014-11-11 David Malcolm <dmalcolm@redhat.com>
+
+ * ChangeLog.jit: New.
+ * ChangeLog: New.
+ * Make-lang.in: New.
+ * TODO.rst: New.
+ * config-lang.in: New.
+ * docs/Makefile: New.
+ * docs/_build/texinfo/Makefile: New.
+ * docs/_build/texinfo/factorial.png: New.
+ * docs/_build/texinfo/libgccjit.texi: New.
+ * docs/_build/texinfo/sum-of-squares.png: New.
+ * docs/conf.py: New.
+ * docs/examples/tut01-hello-world.c: New.
+ * docs/examples/tut02-square.c: New.
+ * docs/examples/tut03-sum-of-squares.c: New.
+ * docs/examples/tut04-toyvm/Makefile: New.
+ * docs/examples/tut04-toyvm/factorial.toy: New.
+ * docs/examples/tut04-toyvm/fibonacci.toy: New.
+ * docs/examples/tut04-toyvm/toyvm.c: New.
+ * docs/index.rst: New.
+ * docs/internals/index.rst: New.
+ * docs/intro/factorial.png: New.
+ * docs/intro/index.rst: New.
+ * docs/intro/sum-of-squares.png: New.
+ * docs/intro/tutorial01.rst: New.
+ * docs/intro/tutorial02.rst: New.
+ * docs/intro/tutorial03.rst: New.
+ * docs/intro/tutorial04.rst: New.
+ * docs/topics/contexts.rst: New.
+ * docs/topics/expressions.rst: New.
+ * docs/topics/functions.rst: New.
+ * docs/topics/index.rst: New.
+ * docs/topics/locations.rst: New.
+ * docs/topics/objects.rst: New.
+ * docs/topics/results.rst: New.
+ * docs/topics/types.rst: New.
+ * dummy-frontend.c: New.
+ * jit-builtins.c: New.
+ * jit-builtins.h: New.
+ * jit-common.h: New.
+ * jit-playback.c: New.
+ * jit-playback.h: New.
+ * jit-recording.c: New.
+ * jit-recording.h: New.
+ * libgccjit++.h: New.
+ * libgccjit.c: New.
+ * libgccjit.h: New.
+ * libgccjit.map: New.
+ * notes.txt: New.
+
+2013-07-26 David Malcolm <dmalcolm@redhat.com>
+
+ * Initial creation
+
+Copyright (C) 2013-2015 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.