2021-09-10  Petter Tomner  <tomner@kth.se>

	* jit-playback.c: Moved global var processing to after loc handling.
	  Setting TYPE_NAME for fundamental types.
	  Using common functions for finalizing globals.
	* jit-playback.h: New method init_types().
	  Changed get_tree_node_for_type() to method.

2021-08-19  Iain Sandoe  <iain@sandoe.co.uk>

	* docs/examples/tut04-toyvm/toyvm.c: Include jit-dejagnu.h.
	* docs/examples/tut04-toyvm/toyvm.cc: Likewise.
	* jit-dejagnu.h: New file, imported from dejagnu-1.6.2 and
	patched for this application.

2021-08-18  Iain Sandoe  <iain@sandoe.co.uk>

	PR jit/100613
	* Make-lang.in: Provide clauses for Darwin hosts.

2021-07-18  Antoni Boucher  <bouanto@zoho.com>

	PR target/95498
	* jit-playback.c (convert): Add support to handle truncation and
	extension in the convert function.

2021-05-19  Martin Liska  <mliska@suse.cz>

	PR testsuite/100658
	* libgccjit.c (gcc_jit_context_new_function): Fix typos.

2021-03-24  Matthias Klose  <doko@ubuntu.com>

	* Make-lang.in (jit.sphinx.html, jit.sphinx.pdf): Use $(mkinstalldirs),
	(jit.install-headers): Depend on installdirs.

2021-02-19  David Malcolm  <dmalcolm@redhat.com>

	PR jit/99126
	* jit-builtins.c
	(gcc::jit::builtins_manager::get_builtin_function_by_id):
	Update assertion to reject BUILT_IN_NONE.
	(gcc::jit::builtins_manager::ensure_optimization_builtins_exist):
	New.
	* jit-builtins.h
	(gcc::jit::builtins_manager::ensure_optimization_builtins_exist):
	New decl.
	* jit-playback.c (gcc::jit::playback::context::replay): Call it.
	Remove redundant conditional on bm.

2021-01-14  David Malcolm  <dmalcolm@redhat.com>

	* docs/cp/index.rst: Remove "Alpha" warning.
	* docs/index.rst: Likewise.
	* docs/_build/texinfo/libgccjit.texi: Regenerate

2020-11-25  Martin Sebor  <msebor@redhat.com>

	PR bootstrap/94982
	* jit-recording.c (recording::function::dump_to_dot): Avoid
	-Wformat-diag.
	(recording::block::dump_to_dot): Same.

2020-11-20  Jakub Jelinek  <jakub@redhat.com>

	PR other/97911
	* Make-lang.in (jit.serial): Change from goal to a
	variable.
	(.PHONY): Drop jit.serial and jit.prev.
	($(LIBGCCJIT_FILENAME)): Depend on $(jit.serial) rather than
	jit.serial.

2020-11-18  Jakub Jelinek  <jakub@redhat.com>

	* Make-lang.in (jit.serial): New goal.
	(.PHONY): Add jit.serial jit.prev.
	($(LIBGCCJIT_FILENAME)): Depend on jit.prev.  Call LINK_PROGRESS.

2020-11-12  David Malcolm  <dmalcolm@redhat.com>

	PR jit/87291
	* docs/cp/topics/asm.rst: New file.
	* docs/cp/topics/index.rst (Topic Reference): Add it.
	* docs/topics/asm.rst: New file.
	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_15): New.
	* docs/topics/functions.rst (Statements): Add link to extended
	asm.
	* docs/topics/index.rst (Topic Reference): Add asm.rst.
	* docs/topics/objects.rst: Add gcc_jit_extended_asm to ASCII art.
	* docs/_build/texinfo/Makefile: Regenerate.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.
	* jit-common.h (gcc::jit::recording::extended_asm): New forward
	decl.
	(gcc::jit::recording::top_level_asm): Likewise.
	* jit-playback.c: Include "stmt.h".
	(build_string): New.
	(gcc::jit::playback::context::new_string_literal): Disambiguate
	build_string call.
	(gcc::jit::playback::context::add_top_level_asm): New.
	(build_operand_chain): New.
	(build_clobbers): New.
	(build_goto_operands): New.
	(gcc::jit::playback::block::add_extended_asm): New.
	* jit-playback.h (gcc::jit::playback::context::add_top_level_asm):
	New decl.
	(struct gcc::jit::playback::asm_operand): New struct.
	(gcc::jit::playback::block::add_extended_asm): New decl.
	* jit-recording.c (gcc::jit::recording::context::dump_to_file):
	Dump top-level asms.
	(gcc::jit::recording::context::add_top_level_asm): New.
	(gcc::jit::recording::block::add_extended_asm): New.
	(gcc::jit::recording::block::end_with_extended_asm_goto): New.
	(gcc::jit::recording::asm_operand::asm_operand): New.
	(gcc::jit::recording::asm_operand::print): New.
	(gcc::jit::recording::asm_operand::make_debug_string): New.
	(gcc::jit::recording::output_asm_operand::write_reproducer): New.
	(gcc::jit::recording::output_asm_operand::print): New.
	(gcc::jit::recording::input_asm_operand::write_reproducer): New.
	(gcc::jit::recording::input_asm_operand::print): New.
	(gcc::jit::recording::extended_asm::add_output_operand): New.
	(gcc::jit::recording::extended_asm::add_input_operand): New.
	(gcc::jit::recording::extended_asm::add_clobber): New.
	(gcc::jit::recording::extended_asm::replay_into): New.
	(gcc::jit::recording::extended_asm::make_debug_string): New.
	(gcc::jit::recording::extended_asm::write_flags): New.
	(gcc::jit::recording::extended_asm::write_clobbers): New.
	(gcc::jit::recording::extended_asm_simple::write_reproducer): New.
	(gcc::jit::recording::extended_asm::maybe_populate_playback_blocks):
	New.
	(gcc::jit::recording::extended_asm_goto::extended_asm_goto): New.
	(gcc::jit::recording::extended_asm_goto::replay_into): New.
	(gcc::jit::recording::extended_asm_goto::write_reproducer): New.
	(gcc::jit::recording::extended_asm_goto::get_successor_blocks):
	New.
	(gcc::jit::recording::extended_asm_goto::maybe_print_gotos): New.
	(gcc::jit::recording::extended_asm_goto::maybe_populate_playback_blocks):
	New.
	(gcc::jit::recording::top_level_asm::top_level_asm): New.
	(gcc::jit::recording::top_level_asm::replay_into): New.
	(gcc::jit::recording::top_level_asm::make_debug_string): New.
	(gcc::jit::recording::top_level_asm::write_to_dump): New.
	(gcc::jit::recording::top_level_asm::write_reproducer): New.
	* jit-recording.h
	(gcc::jit::recording::context::add_top_level_asm): New decl.
	(gcc::jit::recording::context::m_top_level_asms): New field.
	(gcc::jit::recording::block::add_extended_asm): New decl.
	(gcc::jit::recording::block::end_with_extended_asm_goto): New
	decl.
	(gcc::jit::recording::asm_operand): New class.
	(gcc::jit::recording::output_asm_operand): New class.
	(gcc::jit::recording::input_asm_operand): New class.
	(gcc::jit::recording::extended_asm): New class.
	(gcc::jit::recording::extended_asm_simple): New class.
	(gcc::jit::recording::extended_asm_goto): New class.
	(gcc::jit::recording::top_level_asm): New class.
	* libgccjit++.h (gccjit::extended_asm): New forward decl.
	(gccjit::context::add_top_level_asm): New.
	(gccjit::block::add_extended_asm): New.
	(gccjit::block::end_with_extended_asm_goto): New.
	(gccjit::extended_asm): New class.
	(gccjit::extended_asm::extended_asm): New ctors.
	(gccjit::extended_asm::set_volatile_flag): New.
	(gccjit::extended_asm::set_inline_flag): New.
	(gccjit::extended_asm::add_output_operand): New.
	(gccjit::extended_asm::add_input_operand): New.
	(gccjit::extended_asm::add_clobber): New.
	(gccjit::extended_asm::get_inner_extended_asm): New.
	* libgccjit.c (struct gcc_jit_extended_asm): New.
	(jit_error): Make "loc" param take a gcc::jit::recording::location *
	rather than a gcc_jit_location *.
	(gcc_jit_block_add_extended_asm): New entrypoint.
	(gcc_jit_block_end_with_extended_asm_goto): New entrypoint.
	(gcc_jit_extended_asm_as_object): New entrypoint.
	(gcc_jit_extended_asm_set_volatile_flag): New entrypoint.
	(gcc_jit_extended_asm_set_inline_flag): New entrypoint.
	(gcc_jit_extended_asm_add_output_operand): New entrypoint.
	(gcc_jit_extended_asm_add_clobber): New entrypoint.
	(gcc_jit_context_add_top_level_asm): New entrypoint.
	* libgccjit.h: Add gcc_jit_extended_asm to ASCII art.
	(gcc_jit_extended_asm): New typedef.
	(LIBGCCJIT_HAVE_ASM_STATEMENTS): New define.
	(gcc_jit_block_add_extended_asm): New entrypoint.
	(gcc_jit_block_end_with_extended_asm_goto): New entrypoint.
	(gcc_jit_extended_asm_as_object): New entrypoint.
	(gcc_jit_extended_asm_set_volatile_flag): New entrypoint.
	(gcc_jit_extended_asm_set_inline_flag): New entrypoint.
	(gcc_jit_extended_asm_add_output_operand): New entrypoint.
	(gcc_jit_extended_asm_add_input_operand): New entrypoint.
	(gcc_jit_extended_asm_add_clobber): New entrypoint.
	(gcc_jit_context_add_top_level_asm): New entrypoint.
	* libgccjit.map (LIBGCCJIT_ABI_15): New.

2020-11-12  David Malcolm  <dmalcolm@redhat.com>

	* jit-recording.c (recording::context::new_string): Add "escaped"
	param and use it when creating the new recording::string instance.
	(recording::string::string): Add "escaped" param and use it to
	initialize m_escaped.
	(recording::string::make_debug_string): Replace check that first
	char is double-quote with use of m_escaped.  Fix escaping of
	'\t' and '\n'.  Set "escaped" on the result.
	* jit-recording.h (recording::context::new_string): Add "escaped"
	param.
	(recording::string::string): Add "escaped" param.
	(recording::string::m_escaped): New field.

2020-11-12  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h: Fix typo in comment.

2020-09-14  Andrea Corallo  <andrea.corallo@arm.com>

	* docs/_build/texinfo/libgccjit.texi: Regenerate.

2020-09-11  Andrea Corallo  <andrea.corallo@arm.com>

	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_14): New ABI tag.
	* docs/topics/expressions.rst (gcc_jit_global_set_initializer):
	Document new entry point in section 'Global variables'.
	* jit-playback.c (global_new_decl, global_finalize_lvalue): New
	method.
	(playback::context::new_global): Make use of global_new_decl,
	global_finalize_lvalue.
	(load_blob_in_ctor): New template function in use by the
	following.
	(playback::context::new_global_initialized): New method.
	* jit-playback.h (class context): Decl 'new_global_initialized',
	'global_new_decl', 'global_finalize_lvalue'.
	(lvalue::set_initializer): Add implementation.
	* jit-recording.c (recording::memento_of_get_pointer::get_size)
	(recording::memento_of_get_type::get_size): Add implementation.
	(recording::global::write_initializer_reproducer): New function in
	use by 'recording::global::write_reproducer'.
	(recording::global::replay_into)
	(recording::global::write_to_dump)
	(recording::global::write_reproducer): Handle
	initialized case.
	* jit-recording.h (class type): Decl 'get_size' and
	'num_elements'.
	* libgccjit++.h (class lvalue): Declare new 'set_initializer'
	method.
	(class lvalue): Decl 'is_global' and 'set_initializer'.
	(class global) Decl 'write_initializer_reproducer'. Add
	'm_initializer', 'm_initializer_num_bytes' fields.  Implement
	'set_initializer'. Add a destructor to free 'm_initializer'.
	* libgccjit.c (gcc_jit_global_set_initializer): New function.
	* libgccjit.h (gcc_jit_global_set_initializer): New function
	declaration.
	* libgccjit.map (LIBGCCJIT_ABI_14): New ABI tag.

2020-08-28  Martin Sebor  <msebor@redhat.com>

	* jit-recording.c (recording::switch_::make_debug_string): Add argument
	to a call.

2020-08-22  Andrea Corallo  <andrea.corallo@arm.com>

	* libgccjit.c:
	(gcc_jit_context_new_rvalue_from_int)
	(gcc_jit_context_new_rvalue_from_long)
	(gcc_jit_context_new_rvalue_from_double)
	(gcc_jit_context_new_rvalue_from_ptr): Update function heading
	comments.

2020-06-16  Nicolas Bértolo  <nicolasbertolo@gmail.com>

	* Make-lang.in: Always define version, minor and release
	numbers. Create the Windows shared library as
	libgccjit-$(LIBGCCJIT_VERSION_NUM).dll.

2020-06-03  David Malcolm  <dmalcolm@redhat.com>

	PR jit/95306
	* jit-builtins.c (builtins_manager::make_primitive_type):
	Implement BT_CONST_VOLATILE_PTR.

2020-06-02  David Malcolm  <dmalcolm@redhat.com>

	PR jit/95426
	* dummy-frontend.c: Include "options.h", "stringpool.h", and
	"attribs.h".
	(ATTR_EXCL): New, copied from lto/lto-lang.c.
	(attr_noreturn_exclusions): Likewise.
	(attr_returns_twice_exclusions): Likewise.
	(attr_const_pure_exclusions): Likewise.
	(jit_attribute_table): Likewise, copied from lto_attribute_table.
	(jit_format_attribute_table): Likewise, copied from
	lto_format_attribute_table.
	(handle_noreturn_attribute): New, copied from lto/lto-lang.c.
	(handle_leaf_attribute): Likewise.
	(handle_const_attribute): Likewise.
	(handle_malloc_attribute): Likewise.
	(handle_pure_attribute): Likewise.
	(handle_novops_attribute): Likewise.
	(get_nonnull_operand): Likewise.
	(handle_nonnull_attribute): Likewise.
	(handle_nothrow_attribute): Likewise.
	(handle_sentinel_attribute): Likewise.
	(handle_type_generic_attribute): Likewise.
	(handle_transaction_pure_attribute): Likewise.
	(handle_returns_twice_attribute): Likewise.
	(handle_patchable_function_entry_attribute): Likewise.
	(ignore_attribute): Likewise.
	(handle_format_attribute): Likewise.
	(handle_format_arg_attribute): Likewise.
	(handle_fnspec_attribute): Likewise.
	(LANG_HOOKS_COMMON_ATTRIBUTE_TABLE): Define.
	(LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Define.

2020-05-28  Nicolas Bértolo  <nicolasbertolo@gmail.com>

	* Make-lang.in: Remove extra slash. Build libgccjit.dll and its
	import library in Windows.
	* config-lang.in: Update comment about --enable-host-shared.
	* jit-w32.h: New file.
	* jit-w32.c: New file.
	(print_last_error): New function that prints the error
	string corresponding to GetLastError().
	(get_TOKEN_USER_current_user): Helper function used for getting
	the SID belonging to the current user.
	(create_directory_for_current_user): Helper function to create
	a directory with permissions such that only the current user can
	access it.
	(win_mkdtemp): Create a temporary directory using Windows APIs.
	* jit-playback.c: Do not chmod files in Windows. Use LoadLibrary,
	FreeLibrary and GetProcAddress instead of libdl.
	* jit-result.h, jit-result.c: Introduce result::handle_t to
	abstract over the types used for dynamic library handles.
	* jit-tempdir.c: Do not use mkdtemp() in Windows, use
	win_mkdtemp().

2020-05-27  David Malcolm  <dmalcolm@redhat.com>

	PR jit/95314
	* dummy-frontend.c (LANG_HOOKS_DEEP_UNSHARING): Define to be true.
	* jit-playback.h (gcc::jit::playback::rvalue): Mark tree node with
	TREE_VISITED.

2020-05-27  Tom Tromey  <tromey@gcc.gnu.org>

	PR jit/91330
	* docs/conf.py (texinfo_documents): Set description.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

2020-05-26  David Malcolm  <dmalcolm@redhat.com>

	PR jit/95306
	* docs/topics/functions.rst
	(gcc_jit_context_get_builtin_function): Document.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.
	* dummy-frontend.c (jit_langhook_global_bindings_p): Remove
	gcc_unreachable.
	* jit-builtins.c (type_names): New array.
	(get_string_for_type_id): New function.
	(gcc::jit::builtins_manager::make_primitive_type): Show name of
	type in error messages.  Update cases to reflect the order in
	builtin-types.def.  Implement cases for BT_INT8, BT_INT16,
	BT_UINT8, BT_CONST_PTR, BT_VOLATILE_PTR, BT_INT_PTR, BT_FLOAT_PTR,
	BT_CONST_DOUBLE_PTR, BT_SIZE, BT_CONST_SIZE.

2020-05-26  David Malcolm  <dmalcolm@redhat.com>

	* docs/topics/compatibility.rst: Fix underline.
	Fix missing labels.
	* docs/topics/types.rst: Fix missing blank line.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

2020-05-26  David Malcolm  <dmalcolm@redhat.com>

	PR jit/95296
	* docs/topics/expressions.rst (Unary Operations): Document that
	result_type of gcc_jit_context_new_unary_op must be a numeric type.
	(Binary Operations): Likewise for gcc_jit_context_new_binary_op.
	(Global variables): Document that "type" of
	gcc_jit_context_new_global must be non-`void`.
	* docs/topics/function-pointers.rst
	(gcc_jit_context_new_function_ptr_type): Document that the
	param_types must be non-void, but that return_type may be.
	* docs/topics/functions.rst (Params): Document that
	gcc_jit_context_new_param's type must be non-void.
	(Functions): Likewise for gcc_jit_function_new_local.
	* docs/topics/types.rst (gcc_jit_context_new_array_type): Document
	that the type must be non-void.
	(gcc_jit_context_new_field): Likewise.
	* docs/_build/texinfo/Makefile: Regenerate.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.
	* libgccjit.c (gcc_jit_context_new_array_type): Fail if
	element_type is void.
	(gcc_jit_context_new_field): Likewise for "type".
	(gcc_jit_context_new_function_ptr_type): Likewise for each
	element of param_types.
	(gcc_jit_context_new_param): Likewise for "type".
	(gcc_jit_context_new_global): Likewise.
	(gcc_jit_function_new_local): Likewise.
	(gcc_jit_type_get_aligned): Likewise.

2020-03-31  Andrea Corallo  <andrea.corallo@arm.com>
	    David Malcolm  <dmalcolm@redhat.com>

	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_13): New ABI tag
	plus add version paragraph.
	* libgccjit++.h (namespace gccjit::version): Add new namespace.
	* libgccjit.c (gcc_jit_version_major, gcc_jit_version_minor)
	(gcc_jit_version_patchlevel): New functions.
	* libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_version): New macro.
	(gcc_jit_version_major, gcc_jit_version_minor)
	(gcc_jit_version_patchlevel): New functions.
	* libgccjit.map (LIBGCCJIT_ABI_13) New ABI tag.

2020-03-23  Andrea Corallo  <andrea.corallo@arm.com>

	* jit-playback.h
	(gcc::jit::playback::context m_recording_ctxt): Remove
	m_char_array_type_node field.
	* jit-playback.c
	(playback::context::context) Remove m_char_array_type_node from member
	initializer list.
	(playback::context::new_string_literal) Fix logic to handle string
	length > 200.

2020-01-01  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

2019-11-29  Julian Brown  <julian@codesourcery.com>

	* jit-builtins.c (BT_DFLOAT32_PTR, BT_DFLOAT64_PTR, BT_DFLOAT128_PTR):
	Remove commented-out cases.

2019-11-20  David Malcolm  <dmalcolm@redhat.com>

	PR jit/92483
	* jit-playback.c (gcc::jit::playback::context::make_fake_args):
	Update GCC_JIT_BOOL_OPTION_SELFCHECK_GC for new --param syntax.

2019-08-13  Richard Sandiford  <richard.sandiford@arm.com>

	PR middle-end/91421
	* jit-playback.c (new_function): Use set_decl_built_in_function.

2019-07-22  Andrea Corallo  <andrea.corallo@arm.com>

	* jit-recording.c (unary_op_reproducer_strings): Make it extern.
	(binary_op_reproducer_strings): Likewise.
	* jit-recording.h (unary_op_reproducer_strings): Likewise.
	(binary_op_reproducer_strings): Likewise.
	* libgccjit.c (gcc_jit_context_new_unary_op): Check result_type to be a
	numeric type.
	* libgccjit.c (gcc_jit_context_new_binary_op): Improve error message.

2019-07-04  Andrea Corallo  <andrea.corallo@arm.com>

	* libgccjit.c (gcc_jit_context_new_binary_op): Check result_type to be a
	numeric type.

2019-07-04  Andrea Corallo  <andrea.corallo@arm.com>

	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_12): New ABI tag.
	* docs/topics/types.rst: Add gcc_jit_context_new_bitfield.
	* jit-common.h (namespace recording): Add class bitfield.
	* jit-playback.c:
	(DECL_C_BIT_FIELD, SET_DECL_C_BIT_FIELD): Add macros.
	(playback::context::new_bitfield): New method.
	(playback::compound_type::set_fields): Add bitfield support.
	(playback::lvalue::mark_addressable): Was jit_mark_addressable make this
	a method of lvalue plus return a bool to communicate success.
	(playback::lvalue::get_address): Check for jit_mark_addressable return
	value.
	* jit-playback.h (new_bitfield): New method.
	(class bitfield): New class.
	(class lvalue): Add jit_mark_addressable method.
	* jit-recording.c (recording::context::new_bitfield): New method.
	(recording::bitfield::replay_into): New method.
	(recording::bitfield::write_to_dump): Likewise.
	(recording::bitfield::make_debug_string): Likewise.
	(recording::bitfield::write_reproducer): Likewise.
	* jit-recording.h (class context): Add new_bitfield method.
	(class field): Make it derivable by class bitfield.
	(class bitfield): Add new class.
	* libgccjit++.h (class context): Add new_bitfield method.
	* libgccjit.c (struct gcc_jit_bitfield): New structure.
	(gcc_jit_context_new_bitfield): New function.
	* libgccjit.h
	(LIBGCCJIT_HAVE_gcc_jit_context_new_bitfield) New macro.
	(gcc_jit_context_new_bitfield): New function.
	* libgccjit.map (LIBGCCJIT_ABI_12) New ABI tag.

2019-03-21  Jakub Jelinek  <jakub@redhat.com>

	* jit-recording.c (reproducer::m_set_identifiers): Use false as Lazy
	in hash_set template param.

2019-02-05  Andrea Corallo  <andrea.corallo@arm.com>

	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_11): New ABI tag.
	* docs/topics/contexts.rst (Additional driver options): New
	section.
	* jit-playback.c (invoke_driver): Add call to append_driver_options.
	* jit-recording.c: Within namespace gcc::jit...
	(recording::context::~context): Free the optnames within
	m_driver_options.
	(recording::context::add_driver_option): New method.
	(recording::context::append_driver_options): New method.
	(recording::context::dump_reproducer_to_file): Add driver
	options.
	* jit-recording.h: Within namespace gcc::jit...
	(recording::context::add_driver_option): New method.
	(recording::context::append_driver_options): New method.
	(recording::context::m_driver_options): New field.
	* libgccjit++.h (gccjit::context::add_driver_option): New
	method.
	* libgccjit.c (gcc_jit_context_add_driver_option): New API
	entrypoint.
	* libgccjit.h (gcc_jit_context_add_driver_option): New API
	entrypoint.
	(LIBGCCJIT_HAVE_gcc_jit_context_add_driver_option): New
	macro.
	* libgccjit.map (LIBGCCJIT_ABI_11): New ABI tag.

2019-01-01  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

2018-11-15  David Malcolm  <dmalcolm@redhat.com>

	PR other/19165
	* dummy-frontend.c (jit_begin_diagnostic): Add diagnostic_t param.

2018-11-13  David Malcolm  <dmalcolm@redhat.com>

	* jit-playback.c: Replace "source_location" with "location_t".

2018-10-17  David Malcolm  <dmalcolm@redhat.com>

	* Make-lang.in (selftest-jit): New.

2018-06-28  Martin Liska  <mliska@suse.cz>

	* jit-playback.c: Include opt-suggestions.h.

2018-06-28  Martin Liska  <mliska@suse.cz>

	* jit-playback.c (class auto_argvec): Moved to vec.h.
	(auto_argvec::~auto_argvec): Likewise.
	(compile): Use the renamed name.
	(invoke_driver): Likewise.

2018-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR jit/84288
	* Make-lang.in ($(LIBGCCJIT_FILENAME)): Add $(EXTRA_GCC_LIBS).

2018-03-09  David Malcolm  <dmalcolm@redhat.com>
	    Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR jit/64089
	PR jit/84288
	* Make-lang.in (COMMA): New.
	(LIBGCCJIT_VERSION_SCRIPT_OPTION): New.
	(LIBGCCJIT_SONAME_OPTION): New.
	(jit): Move --version-script and -soname linker options to the
	above.

2018-01-25  David Malcolm  <dmalcolm@redhat.com>

	PR jit/81672
	* jit-recording.h (gcc::jit::recording::union_): Remove fields
	"m_loc" and "m_name".

2018-01-03  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

2017-12-19  Jakub Jelinek  <jakub@redhat.com>

	* jit-playback.c (get_type, playback::compile_to_file::copy_file,
	playback::context::acquire_mutex): Replace Yoda conditions with
	typical order conditions.
	* libgccjit.c (gcc_jit_context_new_struct_type,
	gcc_jit_struct_set_fields, gcc_jit_context_new_union_type,
	gcc_jit_context_new_function, gcc_jit_timer_pop): Likewise.
	* jit-builtins.c (matches_builtin): Likewise.
	* jit-recording.c (recording::compound_type::set_fields,
	recording::fields::write_reproducer, recording::rvalue::set_scope,
	recording::function::validate): Likewise.
	* jit-logging.c (logger::decref): Likewise.

2017-11-30  Jakub Jelinek  <jakub@redhat.com>

	* jit-recording.c
	(recording::memento_of_new_rvalue_from_const <long>::write_reproducer):
	Use ; instead of ;;.

2017-11-28  Jakub Jelinek  <jakub@redhat.com>

	* jit-playback.c (add_switch): Build SWITCH_EXPR using build2 instead
	of build3.  Formatting fixes.  Adjust funciton comment.

2017-11-23  Tom de Vries  <tom@codesourcery.com>

	* libgccjit.c (RETURN_NULL_IF_FAIL_NONNULL_NUMERIC_TYPE): Wrap in
	JIT_{BEGIN,END}_STMT.

2017-10-31  David Malcolm  <dmalcolm@redhat.com>

	* docs/internals/index.rst (Running the test suite): Document
	PRESERVE_EXECUTABLES.
	(Running under valgrind): Add markup to RUN_UNDER_VALGRIND.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

2017-10-04  David Malcolm  <dmalcolm@redhat.com>

	* docs/cp/topics/expressions.rst (Vector expressions): New
	section.
	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_10): New ABI tag.
	* docs/topics/expressions.rst (Vector expressions): New section.
	* docs/topics/types.rst (gcc_jit_type_get_vector): Add link to
	gcc_jit_context_new_rvalue_from_vector.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.
	* jit-common.h (gcc::jit:recording::vector_type): New forward
	decl.
	* jit-playback.c
	(gcc::jit::playback::context::new_rvalue_from_vector): New method.
	* jit-playback.h
	(gcc::jit::playback::context::new_rvalue_from_vector): New method.
	* jit-recording.c: In namespace gcc::jit::
	(class comma_separated_string): New class.
	(comma_separated_string::comma_separated_string): New ctor,
	adapted from recording::call::make_debug_string.
	(comma_separated_string::~comma_separated_string): New dtor.
	In namespace gcc::jit::recording::
	(context::new_rvalue_from_vector): New method.
	(type::get_vector): Update for renaming of memento_of_get_vector.
	(class memento_of_get_vector): Rename to...
	(class vector_type): ..this.
	(memento_of_new_rvalue_from_vector::memento_of_new_rvalue_from_vector):
	New ctor.
	(memento_of_new_rvalue_from_vector::replay_into): New method.
	(memento_of_new_rvalue_from_vector::visit_children): New method.
	(memento_of_new_rvalue_from_vector::make_debug_string): New
	method.
	(memento_of_new_rvalue_from_vector::write_reproducer): New method.
	(call::make_debug_string): Split out arg-printing code into ctor
	for comma_separated_string.
	* jit-recording.h: In namespace gcc::jit::recording::
	(context::new_rvalue_from_vector): New method.
	(type::dyn_cast_vector_type): New virtual function.
	(class memento_of_get_vector): Rename to...
	(class vector_type): ...this.
	(vector_type::unqualified): Remove this vfunc override in favor
	of...
	(vector_type::get_element_type): ...this new method.
	(vector_type::get_num_units): New method.
	(vector_type::dyn_cast_vector_type): New vfunc override.
	(class memento_of_new_rvalue_from_vector): New class.
	* libgccjit++.h (gccjit::context::new_rvalue): Add overload for
	vector of rvalue.
	* libgccjit.c (gcc_jit_context_new_binary_op): Strip off type
	qualifications when checking that both operands have same type.
	(gcc_jit_context_new_rvalue_from_vector): New API entrypoint.
	* libgccjit.h
	(LIBGCCJIT_HAVE_gcc_jit_context_new_rvalue_from_vector): New
	macro.
	(gcc_jit_context_new_rvalue_from_vector): New API entrypoint.
	* libgccjit.map (LIBGCCJIT_ABI_10): New ABI tag.

2017-09-28  David Malcolm  <dmalcolm@redhat.com>

	* docs/topics/expressions.rst (Function calls): Add link to
	gcc_jit_context_new_function_ptr_type.
	(Function pointers): Convert to cross-references to
	function-pointers.rst, moving material there.
	* docs/topics/function-pointers.rst: New page.
	* docs/topics/index.rst: Add function-pointers.rst.
	* docs/topics/types.rst (Function pointer types): New section.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

2017-09-28  David Malcolm  <dmalcolm@redhat.com>

	* jit-recording.c
	(gcc::jit::recording::function_type::is_same_type_as): New function.
	* jit-recording.h: In namespace gcc::jit::recording::
	(type::accepts_writes_from): Use is_same_type_as rather than pointer
	equality.
	(type::is_same_type_as): New virtual function.
	(function_type::is_same_type_as): New override.

2017-09-27  David Malcolm  <dmalcolm@redhat.com>

	* docs/cp/topics/expressions.rst (Function pointers): New section.
	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_9): New tag.
	* docs/topics/expressions.rst (Function pointers): New section.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.
	* jit-common.h (class gcc::jit::recording::function_pointer): New
	forward decl.
	* jit-playback.c (gcc::jit::playback::function::get_address): New
	method.
	* jit-playback.h (gcc::jit::playback::function::get_address): New
	method decl.
	* jit-recording.c: Within namespace gcc::jit::recording...
	(function::function): Initialize new field "m_fn_ptr_type".
	(function::get_address): New method.
	(function_pointer::replay_into): New method.
	(function_pointer::visit_children): New method.
	(function_pointer::make_debug_string): New method.
	(function_pointer::write_reproducer): New method.
	* jit-recording.h: Within namespace gcc::jit::recording...
	(function::get_address): New method.
	(function): Add field "m_fn_ptr_type".
	(class function_pointer): New subclass of rvalue.
	* libgccjit++.h (gccjit::function::get_address): New method.
	* libgccjit.c (gcc_jit_function_get_address): New function.
	* libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_function_get_address): New
	macro.
	(gcc_jit_function_get_address): New API entrypoint.
	* libgccjit.map (LIBGCCJIT_ABI_9): New tag.

2017-09-14  David Malcolm  <dmalcolm@redhat.com>

	PR jit/82174
	* jit-builtins.c (matches_builtin): Ignore entries with a NULL
	name.

2017-08-18  David Malcolm  <dmalcolm@redhat.com>

	PR tree-optimization/46805
	* dummy-frontend.c (jit_langhook_parse_file): Handle vector types.

2017-08-18  David Malcolm  <dmalcolm@redhat.com>

	* jit-recording.c (class gcc::jit::reproducer): Rename field
	"m_identifiers" to "m_map_memento_to_identifier".  Add field
	"m_set_identifiers" and struct hash_traits for it.
	(gcc::jit::reproducer::reproducer): Update for above.
	(convert_to_identifier): New function.
	(gcc::jit::reproducer::ensure_identifier_is_unique): New method.
	(gcc::jit::reproducer::make_identifier): Avoid appending the %p
	unless necessary for uniqueness.  Update for field renaming.
	(gcc::jit::reproducer::get_identifier): Update for field renaming.

2017-08-09  David Malcolm  <dmalcolm@redhat.com>

	* docs/cp/topics/types.rst (Vector types): New section.
	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_8): New tag.
	* docs/topics/types.rst (gcc_jit_context_get_type): Fix typo in
	example.
	(Vector types): New section.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.
	* jit-playback.c (gcc::jit::playback::type::get_vector): New
	method.
	* jit-playback.h (gcc::jit::playback::type::get_vector): New
	method.
	* jit-recording.c: In namespace gcc::jit::recording::
	(type::get_vector): New method.
	(memento_of_get_aligned::write_reproducer): Fix typo
	in leading comment.
	(memento_of_get_vector::replay_into): New method.
	(memento_of_get_vector::make_debug_string): New method.
	(memento_of_get_vector::write_reproducer): New method.
	* jit-recording.h: In namespace gcc::jit::recording::
	(type::get_vector): New
	 method.
	(class memento_of_get_vector): New class.
	* libgccjit++.h (gccjit::type::get_vector): New method.
	* libgccjit.c (gcc_jit_type_get_vector): New public entrypoint.
	* libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_type_get_vector): New
	define.
	(gcc_jit_type_get_vector): New decl.
	* libgccjit.map (LIBGCCJIT_ABI_8): New ABI tag.

2017-07-05  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

	* dummy-frontend.c (jit_langhook_type_for_mode): Remove "enum" before
	"machine_mode".

2017-04-24  David Malcolm  <dmalcolm@redhat.com>

	* docs/cp/topics/types.rst (gccjit::type::get_const): Remove
	comment.
	(gccjit::type::get_aligned): Add.
	* docs/topics/compatibility.rst: Add LIBGCCJIT_ABI_7.
	* docs/topics/types.rst: Add gcc_jit_type_get_aligned.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.
	* jit-playback.c (gcc::jit::playback::type::get_aligned): New
	method.
	* jit-playback.h (gcc::jit::playback::type::get_aligned): New
	method.
	* jit-recording.c: Within namespace gcc::jit::recording...
	(type::get_aligned): New method.
	(memento_of_get_aligned::replay_into): New method.
	(memento_of_get_aligned::make_debug_string): New method.
	(memento_of_get_aligned::write_reproducer): New method.
	* jit-recording.h: Within namespace gcc::jit::recording...
	(type::get_aligned): New method.
	(type::accepts_writes_from): Strip off qualifications from
	this when comparing pointer equality.
	(decorated_type): New subclass of type, subsuming the
	commonality between memento_of_get_const and
	memento_of_get_volatile.
	(memento_of_get_const): Make a subclass of decorated_type,
	rather than type.
	(memento_of_get_volatile): Likewise.
	(memento_of_get_aligned): Likewise.
	* libgccjit++.h: Within namespace gccjit...
	(type::get_const): New method.
	(type::get_aligned): New method.
	* libgccjit.c (gcc_jit_type_get_aligned): New function.
	* libgccjit.h (gcc_jit_type_get_aligned): New decl.
	* libgccjit.map (LIBGCCJIT_ABI_7): New
	(gcc_jit_type_get_aligned): Add.

2017-01-19  David Malcolm  <dmalcolm@redhat.com>

	* dummy-frontend.c (jit_langhook_type_for_size): Delete.
	(LANG_HOOKS_TYPE_FOR_SIZE): Don't redefine.

2017-01-18  David Malcolm  <dmalcolm@redhat.com>

	* dummy-frontend.c (jit_langhook_type_for_size): Implement, using
	lto's lto_type_for_size.

2017-01-01  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

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.
	(jit_begin_diagnostic): New function.
	(jit_end_diagnostic): New function.
	(jit_langhook_init): Register jit_begin_diagnostic
	and jit_end_diagnostic with the global_dc.
	* jit-playback.c: Include diagnostic.h.
	(gcc::jit::playback::context::add_diagnostic): New method.
	* jit-playback.h (struct diagnostic_context): Add forward
	declaration.
	(gcc::jit::playback::context::add_diagnostic): New method.

2016-05-17  David Malcolm  <dmalcolm@redhat.com>

	* docs/topics/expressions.rst (Function calls): Document
	gcc_jit_context_new_call_through_ptr.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

2016-05-13  David Malcolm  <dmalcolm@redhat.com>

	* jit-playback.h: Within namespace gcc:jit::playback...
	(compile_to_memory::postprocess): Mark with FINAL OVERRIDE.
	(compile_to_file::postprocess): Likewise.
	(function::finalizer): Likewise.
	(block::finalizer): Likewise.
	(source_file::finalizer): Likewise.
	(source_line::finalizer): Likewise.
	* jit-recording.c (gcc::jit::rvalue_usage_validator):: Likewise.
	* jit-recording.h: Within namespace gcc::jit::recording...
	(string::replay_into): Mark with FINAL OVERRIDE.
	(string::make_debug_string): Likewise.
	(string::write_reproducer): Likewise.
	(location::replay_into): Likewise.
	(location::dyn_cast_location): Likewise.
	(location::make_debug_string): Likewise.
	(location::write_reproducer): Likewise.
	(memento_of_get_type::dereference): Likewise.
	(memento_of_get_type::accepts_writes_from): Likewise.
	(memento_of_get_type::is_int): Likewise.
	(memento_of_get_type::is_float): Likewise.
	(memento_of_get_type::is_bool): Likewise.
	(memento_of_get_type::is_pointer): Likewise.
	(memento_of_get_type::is_array): Likewise.
	(memento_of_get_type::is_void): Likewise.
	(memento_of_get_type::replay_into): Likewise.
	(memento_of_get_type::make_debug_string): Likewise.
	(memento_of_get_type::write_reproducer): Likewise.
	(memento_of_get_pointer::dereference): Likewise.
	(memento_of_get_pointer::accepts_writes_from): Likewise.
	(memento_of_get_pointer::replay_into): Likewise.
	(memento_of_get_pointer::is_int): Likewise.
	(memento_of_get_pointer::is_float): Likewise.
	(memento_of_get_pointer::is_bool): Likewise.
	(memento_of_get_pointer::is_pointer): Likewise.
	(memento_of_get_pointer::is_array): Likewise.
	(memento_of_get_pointer::make_debug_string): Likewise.
	(memento_of_get_pointer::write_reproducer): Likewise.
	(memento_of_get_const::dereference): Likewise.
	(memento_of_get_const::accepts_writes_from): Likewise.
	(memento_of_get_const::unqualified): Likewise.
	(memento_of_get_const::is_int): Likewise.
	(memento_of_get_const::is_float): Likewise.
	(memento_of_get_const::is_bool): Likewise.
	(memento_of_get_const::is_pointer): Likewise.
	(memento_of_get_const::is_array): Likewise.
	(memento_of_get_const::void replay_into): Likewise;
	(memento_of_get_const::make_debug_string): Likewise.
	(memento_of_get_const::write_reproducer): Likewise.
	(memento_of_get_volatile::dereference): Likewise.
	(memento_of_get_volatile::unqualified): Likewise.
	(memento_of_get_volatile::is_int): Likewise.
	(memento_of_get_volatile::is_float): Likewise.
	(memento_of_get_volatile::is_bool): Likewise.
	(memento_of_get_volatile::is_pointer): Likewise.
	(memento_of_get_volatile::is_array): Likewise.
	(memento_of_get_volatile::replay_into): Likewise;
	(memento_of_get_volatile::make_debug_string): Likewise.
	(memento_of_get_volatile::write_reproducer): Likewise.
	(array_type::dereference): Likewise.
	(array_type::is_int): Likewise.
	(array_type::is_float): Likewise.
	(array_type::is_bool): Likewise.
	(array_type::is_pointer): Likewise.
	(array_type::is_array): Likewise.
	(array_type::replay_into): Likewise;
	(array_type::make_debug_string): Likewise.
	(array_type::write_reproducer): Likewise.
	(function_type::dereference): Likewise.
	(function_type::function_dyn_cast_function_type): Likewise.
	(function_type::function_as_a_function_type): Likewise.
	(function_type::is_int): Likewise.
	(function_type::is_float): Likewise.
	(function_type::is_bool): Likewise.
	(function_type::is_pointer): Likewise.
	(function_type::is_array): Likewise.
	(function_type::replay_into): Likewise;
	(function_type::make_debug_string): Likewise.
	(function_type::write_reproducer): Likewise.
	(field::replay_into): Likewise;
	(field::write_to_dump): Likewise.
	(field::make_debug_string): Likewise.
	(field::write_reproducer): Likewise.
	(compound_type::dereference): Likewise.
	(compound_type::is_int): Likewise.
	(compound_type::is_float): Likewise.
	(compound_type::is_bool): Likewise.
	(compound_type::is_pointer): Likewise.
	(compound_type::is_array): Likewise.
	(compound_type::has_known_size): Likewise.
	(struct_::dyn_cast_struct): Likewise.
	(struct_::replay_into): Likewise.
	(struct_::access_as_type): Likewise.
	(struct_::make_debug_string): Likewise.
	(struct_::write_reproducer): Likewise.
	(fields::replay_into): Likewise.
	(fields::write_to_dump): Likewise.
	(fields::make_debug_string): Likewise.
	(fields::write_reproducer): Likewise.
	(union_::replay_into): Likewise.
	(union_::make_debug_string): Likewise.
	(union_::write_reproducer): Likewise.
	(lvalue::access_as_rvalue): Mark with OVERRIDE.
	(param::replay_into): Mark with FINAL OVERRIDE.
	(param::visit_children): Likewise.
	(param::dyn_cast_param): Likewise.
	(param::access_as_rvalue): Likewise.
	(param::access_as_lvalue): Likewise.
	(param::make_debug_string): Likewise.
	(param::write_reproducer): Likewise.
	(param::get_precedence): Likewise.
	(function::replay_into): Likewise.
	(function::write_to_dump): Likewise.
	(function::make_debug_string): Likewise.
	(function::write_reproducer): Likewise.
	(block::write_to_dump): Likewise.
	(block::make_debug_string): Likewise.
	(block::write_reproducer): Likewise.
	(block::replay_into): Likewise.
	(global::replay_into): Likewise;
	(global::visit_children): Likewise.
	(global::write_to_dump): Likewise.
	(global::make_debug_string): Likewise.
	(global::write_reproducer): Likewise.
	(global::get_precedence): Likewise.
	(memento_of_new_rvalue_from_const::replay_into): Likewise.
	(memento_of_new_rvalue_from_const::visit_children): Likewise.
	(memento_of_new_rvalue_from_const::is_constant): Likewise.
	(memento_of_new_rvalue_from_const::get_wide_int): Likewise.
	(memento_of_new_rvalue_from_const::make_debug_string): Likewise.
	(memento_of_new_rvalue_from_const::write_reproducer): Likewise.
	(memento_of_new_rvalue_from_const::get_precedence): Likewise.
	(memento_of_new_string_literal::replay_into): Likewise.
	(memento_of_new_string_literal::visit_children): Likewise.
	(memento_of_new_string_literal::make_debug_string): Likewise.
	(memento_of_new_string_literal::write_reproducer): Likewise.
	(memento_of_new_string_literal::get_precedence): Likewise.
	(unary_op::replay_into): Likewise.
	(unary_op::visit_children): Likewise.
	(unary_op::make_debug_string): Likewise.
	(unary_op::write_reproducer): Likewise.
	(unary_op::get_precedence): Likewise.
	(binary_op::replay_into): Likewise.
	(binary_op::visit_children): Likewise.
	(binary_op::make_debug_string): Likewise.
	(binary_op::write_reproducer): Likewise.
	(binary_op::get_precedence): Likewise.
	(comparison::replay_into): Likewise.
	(comparison::visit_children): Likewise.
	(comparison::make_debug_string): Likewise.
	(comparison::write_reproducer): Likewise.
	(comparison::get_precedence): Likewise.
	(cast::replay_into): Likewise.
	(cast::visit_children): Likewise.
	(cast::make_debug_string): Likewise.
	(cast::write_reproducer): Likewise.
	(cast::get_precedence): Likewise.
	(call::replay_into): Likewise.
	(call::visit_children): Likewise.
	(call::make_debug_string): Likewise.
	(call::write_reproducer): Likewise.
	(call::get_precedence): Likewise.
	(call_through_ptr::replay_into): Likewise.
	(call_through_ptr::visit_children): Likewise.
	(call_through_ptr::make_debug_string): Likewise.
	(call_through_ptr::write_reproducer): Likewise.
	(call_through_ptr::get_precedence): Likewise.
	(array_access::replay_into): Likewise.
	(array_access::visit_children): Likewise.
	(array_access::make_debug_string): Likewise.
	(array_access::write_reproducer): Likewise.
	(array_access::get_precedence): Likewise.
	(access_field_of_lvalue::replay_into): Likewise.
	(access_field_of_lvalue::visit_children): Likewise.
	(access_field_of_lvalue::make_debug_string): Likewise.
	(access_field_of_lvalue::write_reproducer): Likewise.
	(access_field_of_lvalue::get_precedence): Likewise.
	(access_field_rvalue::replay_into): Likewise.
	(access_field_rvalue::visit_children): Likewise.
	(access_field_rvalue::make_debug_string): Likewise.
	(access_field_rvalue::write_reproducer): Likewise.
	(access_field_rvalue::get_precedence): Likewise.
	(dereference_field_rvalue::replay_into): Likewise.
	(dereference_field_rvalue::visit_children): Likewise.
	(dereference_field_rvalue::make_debug_string): Likewise.
	(dereference_field_rvalue::write_reproducer): Likewise.
	(dereference_field_rvalue::get_precedence): Likewise.
	(dereference_rvalue::replay_into): Likewise.
	(dereference_rvalue::visit_children): Likewise.
	(dereference_rvalue::make_debug_string): Likewise.
	(dereference_rvalue::write_reproducer): Likewise.
	(dereference_rvalue::get_precedence): Likewise.
	(get_address_of_lvalue::replay_into): Likewise.
	(get_address_of_lvalue::visit_children): Likewise.
	(get_address_of_lvalue::make_debug_string): Likewise.
	(get_address_of_lvalue::write_reproducer): Likewise.
	(get_address_of_lvalue::get_precedence): Likewise.
	(local::replay_into): Likewise.
	(local::visit_children): Likewise.
	(local::write_to_dump): Likewise.
	(local::make_debug_string): Likewise.
	(local::write_reproducer): Likewise.
	(local::get_precedence): Likewise.
	(statement::write_to_dump): Likewise.
	(eval::replay_into): Likewise.
	(eval::make_debug_string): Likewise.
	(eval::write_reproducer): Likewise.
	(assignment::replay_into): Likewise.
	(assignment::make_debug_string): Likewise.
	(assignment::write_reproducer): Likewise.
	(assignment_op::replay_into): Likewise.
	(assignment_op::make_debug_string): Likewise.
	(assignment_op::write_reproducer): Likewise.
	(comment::replay_into): Likewise.
	(comment::make_debug_string): Likewise.
	(comment::write_reproducer): Likewise.
	(conditional::replay_into): Likewise.
	(conditional::get_successor_blocks): Likewise.
	(conditional::make_debug_string): Likewise.
	(conditional::write_reproducer): Likewise.
	(jump::replay_into): Likewise.
	(jump::get_successor_blocks): Likewise.
	(jump::make_debug_string): Likewise.
	(jump::write_reproducer): Likewise.
	(return_::replay_into): Likewise.
	(return_::get_successor_blocks): Likewise.
	(return_::make_debug_string): Likewise.
	(return_::write_reproducer): Likewise.
	(case_::replay_into): Likewise.
	(case_::write_reproducer): Likewise.
	(case_::make_debug_string): Likewise.
	(switch_::replay_into): Likewise.
	(switch_::get_successor_blocks): Likewise.
	(switch_::make_debug_string): Likewise.
	(switch_::write_reproducer): Likewise.

2016-02-08  David Malcolm  <dmalcolm@redhat.com>

	* dummy-frontend.c (jit_langhook_init): Remove
	second argument to build_common_tree_nodes to
	track r233218.

2016-01-23  Iain Buclaw  <ibuclaw@gdcproject.org>

	* jit-playback.c: Include pthread.h.

2016-01-19  David Malcolm  <dmalcolm@redhat.com>

	PR jit/69144
	* jit-playback.c (gcc::jit::playback::compile_to_file::postprocess):
	Potentially add the temporary artifact to the tempdir's list of
	tempfiles needing additional cleanup.
	(gcc::jit::playback::context::extract_any_requested_dumps): Likewise
	for the dumpfile.
	* jit-tempdir.c (gcc::jit::tempdir::~tempdir): Clean up additional
	tempfiles.
	* jit-tempdir.h (gcc::jit::tempdir::add_temp_file): New method.
	(gcc::jit::tempdir::m_tempfiles): New field.
	* docs/cp/intro/tutorial04.rst: Update for changes to toyvm.cc.
	* docs/examples/tut04-toyvm/toyvm.cc (class compilation_result):
	New.
	(toyvm_function::compile): Change return type from function ptr
	to a compilation_result.
	(toyvm_function::get_function_name): New accessor.
	(toyvm_function::m_funcname): New field.
	(get_function_name): Convert to...
	(toyvm_function::make_function_name): ...this new method.
	(toyvm_function::parse): Call make_function_name.
	(toyvm_function::compile): Convert return type from function ptr
	to a compilation_result.  Use get_function_name.
	(compilation_state::compile): Convert return type from
	gcc_jit_result * to a compilation_result.
	(test_script): Update for above changes, extracting the code from
	the compilation_result.
	(main): Likewise.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

2016-01-04  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

2015-11-11  Andrew MacLeod  <amacleod@redhat.com>

	* dummy-frontend.c: Remove unused header files.
	* jit-builtins.c: Likewise.
	* jit-playback.c: Likewise.
	* jit-recording.c: Likewise.
	* jit-spec.c: Likewise.
	* libgccjit.c: Likewise.

2015-11-07  Richard Sandiford  <richard.sandiford@arm.com>

	* jit-builtins.c: Don't undef DEF_BUILTIN.

2015-10-29  Andrew MacLeod  <amacleod@redhat.com>

	* dummy-frontend.c: Reorder #include's and remove duplicates.
	* jit-builtins.c: Likewise.
	* jit-playback.c: Likewise.
	* jit-recording.c: Likewise.
	* libgccjit.c: Likewise.

2015-10-13  Jakub Jelinek  <jakub@redhat.com>

	* jit-builtins.c (DEF_FUNCTION_TYPE_9, DEF_FUNCTION_TYPE_10,
	DEF_FUNCTION_TYPE_11): Define.
	* jit-builtins.h (DEF_FUNCTION_TYPE_9, DEF_FUNCTION_TYPE_10,
	DEF_FUNCTION_TYPE_11): Define.

2015-09-30  Thomas Schwinge  <thomas@codesourcery.com>
	    Ulrich Drepper  <drepper@gmail.com>

	* jit-builtins.h: Undefine DEF_FUNCTION_TYPE_VAR_6 after use.

2015-09-30  Matthias Klose  <doko@ubuntu.com>

	* jit-builtins.h Define DEF_FUNCTION_TYPE_VAR_6,
	remove DEF_FUNCTION_TYPE_VAR_11.
	* jit-builtins.c (builtins_manager::make_type): Define and handle
	DEF_FUNCTION_TYPE_VAR_6, remove DEF_FUNCTION_TYPE_VAR_11.

2015-08-25  David Malcolm  <dmalcolm@redhat.com>

	* docs/cp/topics/contexts.rst
	(gccjit::context::set_bool_use_external_driver): New.
	* docs/internals/test-hello-world.exe.log.txt: Update.
	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_5): New.
	* docs/topics/contexts.rst
	(gcc_jit_context_set_bool_use_external_driver): New.
	* jit-common.h (enum inner_bool_option): Add
	INNER_BOOL_OPTION_USE_EXTERNAL_DRIVER.
	* jit-playback.c (gcc_driver_name): New global.
	(gcc:jit::playback::context::invoke_driver): Split out second
	half into...
	(gcc::jit::playback::context::invoke_embedded_driver): ...this new
	function, and...
	(gcc::jit::playback::context::invoke_external_driver): ...this new
	function.
	* jit-playback.h
	(gcc::jit::playback::context::get_inner_bool_option): New.
	(gcc::jit::playback::context::invoke_embedded_driver): New.
	(gcc::jit::playback::context::invoke_external_driver): New.
	* jit-recording.c (inner_bool_option_reproducer_strings):
	Add entry for INNER_BOOL_OPTION_USE_EXTERNAL_DRIVER.
	* libgccjit++.h
	(gccjit::context::set_bool_use_external_driver): New.
	* libgccjit.c (gcc_jit_context_set_bool_use_external_driver): New.
	* libgccjit.h (gcc_jit_context_set_bool_use_external_driver): New.
	(LIBGCCJIT_HAVE_gcc_jit_context_set_bool_use_external_driver):
	New.
	* libgccjit.map (LIBGCCJIT_ABI_5): New.
	* notes.txt: Show invocation of embedded copy of driver.
	* docs/internals/test-hello-world.exe.log.txt: Update

2015-08-13  David Malcolm  <dmalcolm@redhat.com>

	* jit-playback.c (invoke_driver): On OS X, add
	"-Wl,-undefined,dynamic_lookup" to the driver arguments.

2015-08-03  David Malcolm  <dmalcolm@redhat.com>

	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_4): New.
	* docs/topics/contexts.rst (GCC_JIT_BOOL_OPTION_DUMP_SUMMARY):
	We no longer show a profile.
	* docs/topics/index.rst (Topic Reference): Add performance.rst.
	* docs/topics/performance.rst: New file.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.
	* jit-playback.c (gcc::jit::playback::context::compile): Add timer
	param when constructing the "toplev" instance.
	(gcc::jit::playback::context::acquire_mutex): Add timer param when
	constructing auto_timevar instance.
	(gcc::jit::playback::context::make_fake_args): If we have a timer,
	add "-ftime-report".
	(gcc::jit::playback::context::invoke_driver): Add timer param when
	constructing auto_timevar instance.
	(gcc::jit::playback::context::dlopen_built_dso): Likewise.
	* jit-playback.h (gcc::jit::playback::context::get_timer): New accessor.
	* jit-recording.c: Include timevar.h.
	(gcc::jit::recording::context::context): Initialize field "m_timer".
	* jit-recording.h: Add forward declaration of class timer.
	(gcc::jit::recording::context::set_timer): New method.
	(gcc::jit::recording::context::get_timer): New method.
	(gcc::jit::recording::context::m_timer): New field.
	* libgccjit++.h (gccjit::timer): New class.
	(gccjit::auto_time): New class.
	(gccjit::context::set_timer): New method.
	(gccjit::context::get_timer): New.
	(gccjit::timer::timer): New.
	(gccjit::timer::push): New.
	(gccjit::timer::pop): New.
	(timer::print): New.
	(timer::get_inner_timer): New.
	(timer::release): New.
	(auto_time::auto_time): New.
	(auto_time::~auto_time): New.
	* libgccjit.c: Include timevar.h.
	(struct gcc_jit_timer): New.
	(gcc_jit_timer_new): New function.
	(gcc_jit_timer_release): New function.
	(gcc_jit_context_set_timer): New function.
	(gcc_jit_context_get_timer): New function.
	(gcc_jit_timer_push): New function.
	(gcc_jit_timer_pop): New function.
	(gcc_jit_timer_print): New function.
	* libgccjit.h (LIBGCCJIT_HAVE_TIMING_API): New macro.
	(gcc_jit_timer): New typedef.
	(gcc_jit_timer_new): New function.
	(gcc_jit_timer_release): New function.
	(gcc_jit_context_set_timer): New function.
	(gcc_jit_context_get_timer): New function.
	(gcc_jit_timer_push): New function.
	(gcc_jit_timer_pop): New function.
	(gcc_jit_timer_print): New function.
	* libgccjit.map (LIBGCCJIT_ABI_4): New.
	(gcc_jit_timer_new): New function.
	(gcc_jit_timer_release): New function.
	(gcc_jit_context_set_timer): New function.
	(gcc_jit_context_get_timer): New function.
	(gcc_jit_timer_push): New function.
	(gcc_jit_timer_pop): New function.
	(gcc_jit_timer_print): New function.

2015-07-23  David Malcolm  <dmalcolm@redhat.com>

	* jit-playback.c (invoke_driver): Convert local "argvec"
	to an auto_argvec, so that it owns copies of the strings,
	rather than borrows them, updating ADD_ARG to use xstrdup
	and special-casing the NULL terminator to avoid
	xstrdup (NULL).  Call add_multilib_driver_arguments at the front
	of the arguments.
	(MULTILIB_DEFAULTS): Provide a default definition.
	(multilib_defaults_raw): New constant array.
	(gcc::jit::playback::context::add_multilib_driver_arguments): New
	method.
	* jit-playback.h
	(gcc::jit::playback::context::add_multilib_driver_arguments): New
	method.
	* docs/internals/test-hello-world.exe.log.txt: Update.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

2015-07-16  David Malcolm  <dmalcolm@redhat.com>

	* docs/internals/index.rst (Overview of code structure): Add note
	that the implementation is in C++, despite the .c extension.
	(Submitting patches): New subsection.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

2015-07-09  Andrew MacLeod  <amacleod@redhat.com>

	* dummy-frontend.c: Adjust includes for flags.h changes.
	* jit-common.h: Likewise.
	* jit-playback.c: Likewise.

2015-07-08  David Malcolm  <dmalcolm@redhat.com>

	PR jit/66783
	* libgccjit.c (gcc_jit_context_new_field): Show name of field in
	"unknown size" error message.
	(gcc_jit_struct_set_fields): Show name of struct in error message.
	(gcc_jit_context_new_global): Show name of global in
	"unknown size" error message.
	(gcc_jit_function_new_local): Likewise for local.

2015-07-07  Andrew MacLeod  <amacleod@redhat.com>

	* dummy-frontend.c: Adjust includes.
	* jit-common.h: Likewise.
	* jit-playback.c: Likewise.

2015-07-07  David Malcolm  <dmalcolm@redhat.com>

	PR jit/66783
	* jit-recording.h: Within namespace gcc:jit::recording...
	(type::has_known_size): New virtual function.
	(struct_has_known_size): New function.
	* libgccjit.c (gcc_jit_context_new_field): Verify that the type
	has a known size.
	(gcc_jit_context_new_global): Likewise.
	(gcc_jit_function_new_local): Likewise.

2015-07-07  David Malcolm  <dmalcolm@redhat.com>

	PR jit/66779
	* dummy-frontend.c (jit_langhook_type_for_mode): Ensure that we
	handle modes QI, HI, SI, DI, TI.

2015-07-01  David Malcolm  <dmalcolm@redhat.com>

	PR jit/66700
	* jit-playback.c (jit_mark_addressable): New function.
	(gcc::jit::playback::lvalue::get_address): Call
	jit_mark_addressable on the underlying tree.

2015-07-01  David Malcolm  <dmalcolm@redhat.com>

	* docs/topics/types.rst (gcc_jit_context_new_union_type): Add
	documentation.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

2015-07-01  David Malcolm  <dmalcolm@redhat.com>

	* docs/topics/contexts.rst (gcc_jit_context_set_bool_option):
	Clarify lack of lifetime requirements on (const char *) parameter.
	* docs/topics/expressions.rst
	(gcc_jit_context_new_string_literal): Likewise.
	(gcc_jit_context_new_global): Likewise.
	* docs/topics/functions.rst (gcc_jit_context_new_param): Likewise.
	(gcc_jit_context_new_function): Likewise.
	(gcc_jit_function_new_block): Likewise.
	(gcc_jit_block_add_comment): Likewise.
	* docs/topics/locations.rst (gcc_jit_context_new_location):
	Likewise.
	* docs/topics/types.rst (gcc_jit_context_new_field): Likewise.
	(gcc_jit_context_new_struct_type): Likewise.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

2015-06-30  David Malcolm  <dmalcolm@redhat.com>

	* docs/cp/topics/functions.rst (Blocks): Add switch statements to
	list of ways to terminate a block.
	(gccjit::block::end_with_switch): Add function description.
	(gccjit::case_): Add class.
	(gccjit::context::new_case): Add function description.
	* docs/cp/topics/objects.rst: Add "case_" to class hierarchy.
	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_3): New.
	* docs/topics/functions.rst (Blocks): Add switch statements to
	list of ways to terminate a block.
	(gcc_jit_block_end_with_switch): Add function description.
	(gcc_jit_case): Add type.
	(gcc_jit_context_new_case): Add function description.
	(gcc_jit_case_as_object): Add function description.
	* docs/topics/objects.rst: Add gcc_jit_case to class hierarchy.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.
	* jit-common.h (gcc::jit::recording::case_): Add forward decl.
	(gcc::jit::playback::case_): Add forward decl.
	* jit-playback.c (add_case): New function.
	(gcc::jit::playback::block::add_switch): New function.
	* jit-playback.h (gcc::jit::playback::case_): New struct.
	(gcc::jit::playback::block::get_function): New method.
	(gcc::jit::playback::block::add_switch): New method.
	* jit-recording.c: Within namespace gcc::jit...
	(recording::context::new_case): New method.
	(recording::function::validate): Update for change to
	get_successor_blocks.
	(recording::block::end_with_switch): New method.
	(recording::block::get_successor_blocks): Update to support an
	arbitrary number of successor blocks.
	(recording::block::dump_edges_to_dot): Likewise.
	(memento_of_new_rvalue_from_const <int>::get_wide_int): New.
	(memento_of_new_rvalue_from_const <long>::get_wide_int): New.
	(memento_of_new_rvalue_from_const <double>::get_wide_int): New.
	(memento_of_new_rvalue_from_const <void *>::get_wide_int): New.
	(recording::statement::get_successor_blocks): Update to support an
	arbitrary number of successor blocks.
	(recording::conditional::get_successor_blocks): Likewise.
	(recording::jump::get_successor_blocks): Likewise.
	(recording::return_::get_successor_blocks): Likewise.
	(recording::case_::write_reproducer): New.
	(recording::case_::make_debug_string): New.
	(recording::switch_::switch_): New.
	(recording::switch_::replay_into): New.
	(recording::switch_::get_successor_blocks): New.
	(recording::switch_::make_debug_string): New.
	(recording::switch_::write_reproducer): New.
	* jit-recording.h: Within namespace gcc::jit::recording...
	(context::new_case): New.
	(rvalue::is_constant): New.
	(rvalue::get_wide_int): New.
	(block::end_with_switch): New.
	(block::get_successor_blocks): Update to support an arbitrary
	number of successor blocks.
	(memento_of_new_rvalue_from_const::is_constant): New.
	(memento_of_new_rvalue_from_const::get_wide_int): New.
	(statement::get_successor_blocks): Update to support an arbitrary
	number of successor blocks.
	(conditional::get_successor_blocks): Likewise.
	(jump::get_successor_blocks): Likewise.
	(return_::get_successor_blocks): Likewise.
	(case_): New subclass of memento.
	(switch_): New subclass of statement.
	* libgccjit++.h (gccjit::case_): New subclass of gccjit::object.
	(gccjit::context::new_case): New method.
	(gccjit::block::end_with_switch): New method.
	(gccjit::case_::case): New ctors.
	(gccjit::case_::get_inner_case): New method.
	* libgccjit.c: Include "typed-splay-tree.h"
	(struct gcc_jit_case): New.
	(gcc_jit_context_new_case): New function.
	(gcc_jit_case_as_object): New function.
	(valid_dest_for_switch): New function.
	(valid_case_for_switch): New function.
	(class api_call_validator): New class.
	(class case_range_validator): New class.
	(case_range_validator::case_range_validator): New.
	(case_range_validator::validate): New.
	(case_range_validator::case_compare): New.
	(case_range_validator::get_wide_int): new.
	(gcc_jit_block_end_with_switch): New.
	* libgccjit.h: Add gcc_jit_case to class hierarchy comment.
	(gcc_jit_case): New typedef.
	(gcc_jit_context_new_case): New function.
	(gcc_jit_case_as_object): New function.
	(gcc_jit_block_end_with_switch): New function.
	(LIBGCCJIT_HAVE_SWITCH_STATEMENTS): New.
	* libgccjit.map: Add gcc_jit_block_end_with_switch,
	gcc_jit_case_as_object and gcc_jit_context_new_case.

2015-06-30  David Malcolm  <dmalcolm@redhat.com>

	PR jit/66546
	* docs/cp/topics/contexts.rst
	(gccjit::context::set_bool_allow_unreachable_blocks): New.
	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_2): New.
	* docs/topics/contexts.rst (Options): Add notes discussing the
	transition from enums to entrypoints for new options.
	(gcc_jit_context_set_bool_allow_unreachable_blocks): New.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.
	* jit-common.h (gcc::jit::inner_bool_option): New enum.
	* jit-recording.c: Within namespace gcc::jit...
	(recording::context::context): Handle m_inner_bool_options.
	(recording::context::set_inner_bool_option): New.
	(inner_bool_option_reproducer_strings): New.
	(recording::context::log_all_options): Log the "inner" bool
	options.
	(recording::context::log_inner_bool_option): New.
	(recording::context::dump_reproducer_to_file): Write initializers
	for "inner" bool options.
	(recording::function::validate): Don't check for block
	reachability if INNER_BOOL_OPTION_ALLOW_UNREACHABLE_BLOCKS is set.
	* jit-recording.h: Within namespace gcc::jit...
	(recording::context::set_inner_bool_option): New.
	(recording::context::get_inner_bool_option): New.
	(recording::context::log_inner_bool_option): New.
	(recording::context::m_inner_bool_options): New.
	* libgccjit++.h
	(gccjit::context::set_bool_allow_unreachable_blocks): New.
	* libgccjit.c
	(gcc_jit_context_set_bool_allow_unreachable_blocks): New.
	* libgccjit.h: Add note about options present in the
	initial release of libgccjit.
	(gcc_jit_context_set_bool_allow_unreachable_blocks): New API
	entrypoint.
	(LIBGCCJIT_HAVE_gcc_jit_context_set_bool_allow_unreachable_blocks):
	New macro.
	* libgccjit.map (LIBGCCJIT_ABI_2): New, containing...
	(gcc_jit_context_set_bool_allow_unreachable_blocks): ...this new
	entrypoint.

2015-06-30  David Malcolm  <dmalcolm@redhat.com>

	PR jit/66628
	* docs/cp/topics/contexts.rst (Additional command-line options):
	New section.
	* docs/topics/compatibility.rst: New file.
	* docs/topics/contexts.rst (Additional command-line options): New
	section.
	* docs/topics/index.rst: Add compatibility.rst.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.
	* jit-playback.c (make_fake_args): Add call to
	append_command_line_options.
	* jit-recording.c: Within namespace gcc::jit...
	(recording::context::~context): Free the optnames within
	m_command_line_options.
	(recording::context::set_bool_option): Likewise.
	(recording::context::add_command_line_option): New method.
	(recording::context::append_command_line_options): New method.
	(recording::context::dump_reproducer_to_file): Add command-line
	options.
	* jit-recording.h: Within namespace gcc::jit...
	(recording::context::add_command_line_option): New method.
	(recording::context::append_command_line_options): New method.
	(recording::context::m_command_line_options): New field.
	* libgccjit++.h (gccjit::context::add_command_line_option): New
	method.
	* libgccjit.c (gcc_jit_context_add_command_line_option): New API
	entrypoint.
	* libgccjit.h (gcc_jit_context_add_command_line_option): New API
	entrypoint.
	(LIBGCCJIT_HAVE_gcc_jit_context_add_command_line_option): New
	macro.
	* libgccjit.map: Put existing symbols within LIBGCCJIT_ABI_0; add
	LIBGCCJIT_ABI_1 and gcc_jit_context_add_command_line_option.

2015-06-30  David Malcolm  <dmalcolm@redhat.com>

	* jit-recording.c
	(gcc::jit::recording::context::dump_reproducer_to_file):
	Add pragma to generated reproducers to disable -Wunused-variable.
	Fix handling of NULL string options.

2015-06-30  David Malcolm  <dmalcolm@redhat.com>

	* docs/cp/topics/expressions.rst: Remove stray semicolon.
	* docs/cp/topics/functions.rst: Remove stray backslash.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

2015-06-25  Andrew MacLeod  <amacleod@redhat.com>

	* dummy-frontend.c: Remove ipa-ref.h and plugin-api.h from include list.
	* jit-playback.c: Likewise.

2015-06-25  Andrew Macleod  <amacleod@redhat.com>

	* jit-common.h: Don't include alias.h.

2015-06-17  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.c (gcc_jit_lvalue_access_field): Verify that the field
	is for the correct struct.
	(gcc_jit_rvalue_access_field): Likewise.

2015-06-17  Andrew MacLeod  <amacleod@redhat.com>

	* dummy-frontend.c: Do not include input.h, line-map.h or is-a.h.
	* jit-common.h: Likewise.
	* jit-playback.c: Likewise.

2015-06-16  David Malcolm  <dmalcolm@redhat.com>

	PR jit/66539
	* jit-recording.c: Within namespace gcc::jit::recording::
	(rvalue::get_debug_string_parens): New function.
	(binary_op::make_debug_string): Update to mimic C precedence
	rules.
	(binary_op_precedence): New array.
	(binary_op::get_precedence): New function.
	(comparison::make_debug_string): Update to mimic C precedence
	rules.
	(comparison_precedence): New array.
	(comparison::get_precedence): New function.
	(cast::make_debug_string): Update to mimic C precedence rules.
	(call::make_debug_string): Likewise.
	(call_through_ptr::make_debug_string): Likewise.
	(array_access::make_debug_string): Likewise.
	(access_field_of_lvalue::make_debug_string): Likewise.
	(access_field_rvalue::make_debug_string): Likewise.
	(dereference_field_rvalue::make_debug_string): Likewise.
	(dereference_rvalue::make_debug_string): Likewise.
	(get_address_of_lvalue::make_debug_string): Likewise.
	* jit-recording.h: Within namespace gcc::jit::recording::
	(precedence): New enum.
	(rvalue::rvalue): Initialize field "m_parenthesized_string".
	(rvalue::get_debug_string_parens): New method.
	(rvalue::get_precedence): New pure virtual function.
	(rvalue::m_parenthesized_string): New field.
	(param::get_precedence): New function.
	(global::get_precedence): New function.
	(memento_of_new_rvalue_from_const::get_precedence): New function.
	(memento_of_new_string_literal::get_precedence): New function.
	(unary_op::get_precedence): New function.
	(binary_op::get_precedence): New function.
	(comparison::get_precedence): New function.
	(cast::get_precedence): New function.
	(call::get_precedence): New function.
	(call_through_ptr::get_precedence): New function.
	(array_access::get_precedence): New function.
	(access_field_of_lvalue::get_precedence): New function.
	(access_field_rvalue::get_precedence): New function.
	(dereference_field_rvalue::get_precedence): New function.
	(dereference_rvalue::get_precedence): New function.
	(get_address_of_lvalue::get_precedence): New function.
	(local::get_precedence): New function.

2015-06-09  Matthias Klose  <doko@ubuntu.com>

	* Make-lang.in (jit.install-common): Install headers using INSTALL_DATA.

2015-06-08  Andrew MacLeod  <amacleod@redhat.com>

	* dummy-frontend.c : Adjust include files.
	* jit-common.h : Likewise.
	* jit-playback.c : Likewise.

2015-06-05  David Malcolm  <dmalcolm@redhat.com>

	* dummy-frontend.c
	(jit_langhook_post_compilation_parsing_cleanups): Remove.
	(LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS): Remove
	* jit-playback.c (gcc::jit::playback::context::new_global): Add
	call to varpool_node::finalize_decl.
	(gcc::jit::playback::context::finalize_global_decls): Remove.
	* jit-playback.h
	(gcc::jit::playback::context::finalize_global_decls): Remove.

2015-06-05  David Malcolm  <dmalcolm@redhat.com>

	* dummy-frontend.c (jit_langhook_write_globals): Rename to...
	(jit_langhook_post_compilation_parsing_cleanups): ...this, and
	eliminate calls to finalize_compilation_unit and
	write_global_decls_2.
	(LANG_HOOKS_WRITE_GLOBALS): Rename to...
	(LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS): ...this and
	redirect from jit_langhook_write_globals to
	jit_langhook_post_compilation_parsing_cleanups.
	* jit-playback.c
	(gcc::jit::playback::context::write_global_decls_1): Rename to...
	(gcc::jit::playback::context::finalize_global_decls): ...this.
	(gcc::jit::playback::context::write_global_decls_1): Delete.
	* jit-playback.h
	(gcc::jit::playback::context::write_global_decls_1): Rename to...
	(gcc::jit::playback::context::finalize_global_decls): ...this.
	(gcc::jit::playback::context::write_global_decls_1): Delete.

2015-06-04  Andrew MacLeod  <amacleod@redhat.com>

	* dummy-frontend.c: Adjust includes for restructured coretypes.h.
	* jit-common.h: Likewise.
	* jit-playback.c: Likewise.

2015-05-12  David Malcolm  <dmalcolm@redhat.com>

	* jit-builtins.c: Include vec.h before target.h.

2015-04-27  Jim Wilson  <jim.wilson@linaro.org>

	* Make-lang.in (jit.mostlyclean): Remove shared libraries and object
	files.

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-2021 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.
