2014-11-10  David Malcolm  <dmalcolm@redhat.com>

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

2014-11-10  David Malcolm  <dmalcolm@redhat.com>

	* dummy-frontend.c: Add includes now needed since r216805 by
	cgraph.h: hash-map.h, is-a.h, plugin-api.h, vec.h, hashtab.h,
	hash-set.h, machmode.h, tm.h, hard-reg-set.h, function.h,
	ipa-ref.h, dumpfile.h.
	* jit-playback.c: Likewise.

2014-11-05  David Malcolm  <dmalcolm@redhat.com>

	* jit-playback.c (gcc::jit::playback::context::handle_locations):
	Drop the disabled debugging code.

2014-11-05  David Malcolm  <dmalcolm@redhat.com>

	* docs/topics/expressions.rst (Type-coercion): Casts between
	pointer types are valid.
	* libgccjit.c: Document that gcc_jit_context et al are actually
	subclasses of the gcc::jit::recording classes.
	(RETURN_VAL_IF_FAIL): Add top-level descriptive comment.
	(RETURN_IF_NOT_VALID_BLOCK): Likewise.
	(RETURN_NULL_IF_NOT_VALID_BLOCK): Likewise.
	(jit_error): Likewise.
	(compatible_types): Likewise.
	(gcc_jit_context_acquire): Likewise.
	(gcc_jit_context_release): Likewise.
	(gcc_jit_context_new_child_context): Likewise.
	(gcc_jit_context_new_location): Likewise.
	(gcc_jit_location_as_object): Likewise.
	(gcc_jit_type_as_object): Likewise.
	(gcc_jit_context_get_type): Likewise.
	(gcc_jit_context_get_int_type): Likewise.
	(gcc_jit_type_get_pointer): Likewise.
	(gcc_jit_type_get_const): Likewise.
	(gcc_jit_type_get_volatile): Likewise.
	(gcc_jit_context_new_array_type): Likewise.  Also document that
	LOC can be NULL.  Fail with an error on negative size.
	(gcc_jit_context_new_field): Add top-level descriptive comment and
	document that LOC can be NULL.
	(gcc_jit_field_as_object): Add top-level descriptive comment.
	(gcc_jit_context_new_struct_type): Likewise.  Also document that
	LOC can be NULL.
	(gcc_jit_context_new_opaque_struct): Likewise.
	(gcc_jit_struct_as_type): Add top-level descriptive comment.
	(gcc_jit_struct_set_fields): Likewise.  Also document that LOC can
	be NULL.
	(gcc_jit_context_new_union_type): Likewise.
	(gcc_jit_context_new_function_ptr_type): Likewise.
	(gcc_jit_context_new_param): Likewise.
	(gcc_jit_param_as_object): Add top-level descriptive comment.
	(gcc_jit_param_as_lvalue): Likewise.
	(gcc_jit_param_as_rvalue): Likewise.
	(gcc_jit_context_new_function): Likewise.  Also document that LOC
	can be NULL.
	(gcc_jit_context_get_builtin_function): Add top-level descriptive
	comment.
	(gcc_jit_function_as_object): Likewise.
	(gcc_jit_function_get_param): Likewise.
	(gcc_jit_function_dump_to_dot): Likewise.
	(gcc_jit_function_new_block): Likewise.
	(gcc_jit_block_as_object): Likewise.
	(gcc_jit_block_get_function): Likewise.
	(gcc_jit_context_new_global): Likewise.  Also document that LOC
	can be NULL.
	(gcc_jit_lvalue_as_object): Add top-level descriptive comment.
	(gcc_jit_lvalue_as_rvalue): Likewise.
	(gcc_jit_rvalue_as_object): Likewise.
	(gcc_jit_rvalue_get_type): Likewise.
	(RETURN_NULL_IF_FAIL_NONNULL_NUMERIC_TYPE): 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.  Also document that LOC
	can be NULL.
	(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.
	(is_valid_cast): Add top-level descriptive comment.
	(gcc_jit_context_new_cast): Likewise.  Also document that LOC can
	be NULL.
	(gcc_jit_context_new_array_access): Likewise.
	(gcc_jit_object_get_context): Add top-level descriptive comment.
	(gcc_jit_object_get_debug_string): Likewise.
	(gcc_jit_lvalue_access_field): Likewise.  Also document that LOC can
	be NULL.
	(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.
	(is_bool): Add top-level descriptive comment.
	(gcc_jit_block_end_with_conditional): Likewise.  Also document
	that LOC can be NULL.
	(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): Add top-level descriptive
	comment.
	(gcc_jit_context_set_int_option): Likewise.
	(gcc_jit_context_set_bool_option): Likewise.
	(gcc_jit_context_compile): Likewise.
	(gcc_jit_context_dump_to_file): Likewise.
	(gcc_jit_context_get_first_error): Likewise.
	(gcc_jit_result_get_code): Likewise.
	(gcc_jit_result_release): Likewise.

	* libgccjit.h (gcc_jit_context_acquire): Remove FIXME from
	comment.
	(gcc_jit_context_get_int_type): Add comment.
	(gcc_jit_context_new_field): Likewise.
	(gcc_jit_context_new_struct_type): Likewise.
	(gcc_jit_context_new_opaque_struct): Likewise.
	(gcc_jit_struct_as_type): Likewise.
	(gcc_jit_context_new_param): Likewise.
	(gcc_jit_param_as_lvalue): Likewise.
	(gcc_jit_param_as_rvalue): Likewise.
	(enum gcc_jit_function_kind): Likewise.
	(gcc_jit_context_new_function): Likewise.
	(gcc_jit_context_get_builtin_function): Likewise.
	(gcc_jit_function_get_param): Likewise.

2014-11-05  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.c (gcc_jit_context_get_type): Verify that "type"
	is valid immediately, rather than relying on called code.
	(gcc_jit_context_new_function): Likewise for "kind".
	(gcc_jit_context_new_unary_op): Likewise for "op".
	(valid_binary_op_p): New.
	(gcc_jit_context_new_binary_op): Verify that "op" is valid
	immediately, rather than relying on called code.
	(gcc_jit_context_new_comparison): Likewise.
	(gcc_jit_block_add_assignment_op): Likewise.

2014-11-05  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.c: Include safe-ctype.h from libiberty.
	(IS_ASCII_ALPHA): Delete.
	(IS_ASCII_DIGIT): Delete.
	(IS_ASCII_ALNUM): Delete.
	(gcc_jit_context_new_function): Replace use of IS_ASCII_ALPHA and
	IS_ASCII_ALNUM with ISALPHA and ISALNUM respectively, from
	libiberty.

2014-10-30  David Malcolm  <dmalcolm@redhat.com>

	* dummy-frontend.c (jit_langhook_init): Remove some dead code.

2014-10-27  David Malcolm  <dmalcolm@redhat.com>

	* dummy-frontend.c: Drop includes of tree-iterator.h,
	tree-ssa-alias.h, gimple-expr.h, gimple.h, gimple-pretty-print.h.
	* jit-playback.c: Drop includes of debug.h, langhooks.h,
	langhooks-def.h, tree-iterator.h, gimple-expr.h, tree-ssa-alias.h,
	gimple.h, gimple-pretty-print.h, diagnostic-core.h, dumpfile.h.

2014-10-21  David Malcolm  <dmalcolm@redhat.com>

	* jit-recording.c: Include tm.h.  Don't include function.h.

2014-10-21  David Malcolm  <dmalcolm@redhat.com>

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

2014-10-21  David Malcolm  <dmalcolm@redhat.com>

	* docs/intro/index.rst: Drop install.rst.  Add tutorial04.rst.
	* docs/intro/install.rst: Rename to...
	* docs/intro/tutorial01.rst: ...this, renaming old tutorial01.rst to...
	* docs/intro/tutorial02.rst: ...this, renaming old tutorial02.rst to...
	* docs/intro/tutorial03.rst: ...this, renaming old tutorial03.rst to...
	* docs/intro/tutorial04.rst: ...this.
	* docs/examples/install-hello-world.c: Rename to...
	* docs/examples/tut01-hello-world.c: ...this.
	* docs/examples/tut01-square.c: Rename to...
	* docs/examples/tut02-square.c: ...this.
	* docs/examples/tut02-sum-of-squares.c: Rename to...
	* docs/examples/tut03-sum-of-squares.c: ...this.
	* docs/examples/tut03-toyvm: Rename directory to...
	* docs/examples/tut04-toyvm: ...this.
	* docs/examples/tut04-toyvm/toyvm.c (PATH_TO_SCRIPTS): Update
	for directory renaming.

2014-10-21  David Malcolm  <dmalcolm@redhat.com>

	* docs/intro/install.rst ("Installation via packages"): Drop
	this section.
	("Installation from source"): Drop this section, moving parts
	of it to https://gcc.gnu.org/wiki/JIT and some others to
	docs/internals/index.rst.
	("Hello world"): This section becomes the only remaining part
	of this file.  Eliminate references to pkg-config.

	* docs/internals/index.rst
	("Using a working copy without installing every time"): Rewrite
	as...
	("Working on the JIT library"): ...new section, aimed at
	contributors (and myself) working from a build directory,
	eliminating references to installation.  Add description
	of pertinent configuration options.
	("Running the test suite"): Add setting of LIBRARY_PATH to
	description of how to run a built binary outside of the test
	suite.
	("Environment variables"): New section, describing pertinent
	environment variables.

2014-10-20  David Malcolm  <dmalcolm@redhat.com>

	* jit-recording.c (gcc::jit::dump::dump): Handle fopen failures
	by emitting an error on the context.
	(gcc::jit::dump::~dump): Likewise for fclose failures.
	(gcc::jit::dump::write): Don't attempt further work if the fopen
	failed.  Handle fwrite failures by emitting an error on the
	context.

2014-10-20  David Malcolm  <dmalcolm@redhat.com>

	* Make-lang.in (jit.install-common): Drop installation of
	libgccjit.pc.
	* config-lang.in (outputs): Drop jit/libgccjit.pc.
	* libgccjit.pc.in: Delete.

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

	* Make-lang.in (jit): Add $(FULL_DRIVER_NAME) as a dependency, so
	that the symlink is created for testing.

	* jit-playback.c (gcc::jit::playback::context::compile): Add
	"-fno-use-linker-plugin" when invoking the driver.  Update error
	messages to talk about the "gcc driver" rather than the
	"gcc harness".  To ease troubleshooting, add error messages giving
	the driver name and PATH to the error-handling code that fires
	when the driver can't be found.

2014-10-07  David Malcolm  <dmalcolm@redhat.com>

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

2014-10-07  David Malcolm  <dmalcolm@redhat.com>

	* docs/internals/index.rst (Overview of code structure): Directly
	include the comment from jit-common.h as rst, rather than as a
	quoted C++ comment.
	* jit-common.h: Convert the summary format to valid reStructured
	text for inclusion by docs/internals/index.rst.
	* notes.txt: Clarify where libgccjit.c, jit-recording.c and
	jit-playback.c fit into the high-level diagram.

2014-10-07  David Malcolm  <dmalcolm@redhat.com>

	* Make-lang.in (jit_OBJS): Drop jit/internal-api.o.
	Add jit/jit-recording.o and jit/jit-playback.o.

	* internal-api.c: Delete, moving content to new files jit-recording.c
	and jit-playback.c.
	* internal-api.h: Delete, moving content to new files
	jit-common.h, jit-playback.h, jit-recording.h.
	* jit-common.h: New file, containing the forward decls of classes
	formerly in internal-api.h.
	* jit-recording.c: New file, containing the gcc::jit::recording
	code formerly in internal-api.c, and gcc::jit::dump.
	* jit-recording.h: New file, containing the gcc::jit::recording
	prototypes formerly in internal-api.h.
	* jit-playback.c: New file, containing the gcc::jit::playback
	code formerly in internal-api.c.
	* jit-playback.h: New file, containing the gcc::jit::playback
	prototypes formerly in internal-api.h.

	* dummy-frontend.c: Don't include "internal-api.h".  Add includes
	of jit-common.h and jit-playback.h.
	* jit-builtins.h: Replace include of internal-api.h with
	jit-common.h.
	* jit-builtins.c: Replace include of internal-api.h with
	jit-common.h.  Add include of jit-recording.h.
	* libgccjit.c: Likewise.

	* docs/internals/index.rst (Overview of code structure): Update
	to reflect the above changes.

2014-10-07  David Malcolm  <dmalcolm@redhat.com>

	* docs/internals/index.rst
	(Using a working copy without installing): Rename to...
	(Using a working copy without installing every time): ...this, and
	update to reflect the need to have installed the driver binary
	when running directly from a build directory.
	(Running the test suite): Add PATH setting to the example.
	* docs/intro/install.rst ("Hello world"): Likewise.
	* internal-api.c: Include new autogenerated header
	"gcc-driver-name.h".
	(gcc::jit::playback::context::compile): Rather than looking for a
	"gcc" on the path, look for GCC_DRIVER_NAME from gcc-driver-name.h,
	as created by the configure script, so that we are using one for
	the correct target.

2014-10-02  David Malcolm  <dmalcolm@redhat.com>

	* Make-lang.in (jit.info): Implement.
	(jit.install-info): Implement.
	(jit.dvi): Implement.
	(jit.pdf): Implement in terms of new target "jit.texinfo.pdf".
	(jit.install-pdf): Likewise for new target
	"jit.texinfo.install-pdf".
	(jit.install-html): Implement in terms of
	"jit.$(doc_build_sys).install-html" to redirect to new targets
	"jit.sphinx.install-html" or "jit.texinfo.install-html".
	(jit.html): Implement in terms of "jit.$(doc_build_sys).html" to
	redirect to new targets "jit.sphinx.html" or "jit.texinfo.html".
	(JIT_TEXI_FILES): New variable.
	(jit.texinfo.html): New target.
	(jit.texinfo.install-html): New target.
	(jit.texinfo.pdf): New target.
	(jit.texinfo.install-pdf): New target.
	(SPHINX_BUILD_DIR): New variable.
	(jit.sphinx.html): New target.
	(jit_htmldir): New variable.
	(jit.sphinx.install-html): New target.
	(jit.sphinx.pdf): New target.

2014-09-26  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.h (gcc::jit::recording::context): Convert field
	"m_first_error_str" from a fixed-size buffer to a pointer, and add
	a field "m_owns_first_error_str" to determine if we're responsible
	for freeing it.
	* internal-api.c (gcc::jit::recording::context::context): Update
	initializations in ctor for above change.
	(gcc::jit::recording::context::~context): Free m_first_error_str
	if we own it.
	(gcc::jit::recording::context::add_error_va): When capturing the
	first error message on a context, rather than copying "errmsg" to
	a fixed-size buffer and truncating if oversize, simply store the
	pointer to the error message, and flag whether we need to free it.
	(gcc::jit::recording::context::get_first_error): Update for change
	of "m_first_error_str" from an internal buffer to a pointer.

2014-09-25  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::playback::context::compile): Use
	pex_one rather than system when invoking "gcc" to go from a .s
	file to a .so file.

2014-09-25  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (make_tempdir_path_template): New.
	(gcc::jit::playback::context::compile): Call
	make_tempdir_path_template to make m_path_template, rather than
	hardcoding "/tmp/" within "/tmp/libgccjit-XXXXXX".

2014-09-24  David Malcolm  <dmalcolm@redhat.com>

	* docs/internals/index.rst ("Overview of code structure"): Add
	more descriptive text, including various fragments of
	internal-api.h as appropriate.
	* internal-api.h: Add marker comments for use by "literalinclude"
	directives in docs/internals/index.rst.

2014-09-24  David Malcolm  <dmalcolm@redhat.com>

	* dummy-frontend.c (my_walker): Rename to...
	(my_ggc_walker): ...this.
	(my_root_tab): Rename to...
	(jit_root_tab): ...this.
	(jit_langhook_init): Update for renaming of "my_root_tab" to
	"jit_root_tab".
	* internal-api.c: Add descriptive API comments to functions
	throughout.
	(mutex): Rename to...
	(jit_mutex): ...this.
	(gcc::jit::recording::context::compile): Update for renaming of
	"mutex" to "jit_mutex".
	* internal-api.h: Add descriptive API comments to functions
	throughout.  Add indentation to forward declarations of classes
	to indicate inheritance.
	* jit-builtins.c: Likewise.

2014-09-24  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::dump::write): Eliminate fixed-size
	buffer "buf" by replacing call to vsnprintf with one to vasprintf
	and a free, emitting an error on the dump's context if a malloc
	failure occurs.
	(gcc::jit::recording::context::add_error_va): Likewise, using
	a precanned message if the malloc inside vasprinf fails.  Split
	local "buf" into "malloced_msg" and "errmsg" to ensure that we
	free the message iff we're using one malloc-ed by vasprintf.
	(gcc::jit::recording::string::from_printf): Eliminate fixed-size
	buffer "buf" by replacing call to vsnprintf with one to vasprintf
	and a free, emitting an error on the relevant context if a malloc
	failure occurs.

2014-09-24  David Malcolm  <dmalcolm@redhat.com>

	* dummy-frontend.c: Update copyright year.  Follow standard for
	initial includes by removing redundant include of "ansidecl.h".
	* internal-api.c: Follow standard for initial includes by removing
	redundant include of "ansidecl.h".
	* jit-builtins.c: Likewise.
	* libgccjit.c: Likewise.

2014-09-24  David Malcolm  <dmalcolm@redhat.com>

	* ChangeLog.jit: Add copyright footer.
	* Make-lang.in: Update copyright.
	* config-lang.in: Update copyright.
	* docs/examples/install-hello-world.c: Add copyright header.
	* docs/examples/tut01-square.c: Likewise.
	* docs/examples/tut02-sum-of-squares.c: Likewise.
	* docs/examples/tut03-toyvm/toyvm.c: Likewise.
	* internal-api.c: Likewise.
	* internal-api.h: Likewise.
	* libgccjit++.h: Likewise.
	* libgccjit.c: Likewise.
	* libgccjit.h: Likewise.
	* libgccjit.map: Likewise.

2014-09-23  David Malcolm  <dmalcolm@redhat.com>

	* TODO.rst (API): Shift operators are done.
	* docs/topics/expressions.rst (Binary): Add shift operators.
	* internal-api.c (binary_op_strings): Likewise.
	(gcc::jit::playback::context::new_binary_op): Likewise.
	* libgccjit.h (enum gcc_jit_binary_op): Likewise.

2014-09-23  David Malcolm  <dmalcolm@redhat.com>

	* TODO.rst: Rename "Initial Release" section to "API", and
	remove completed items: builtins, docs, pkgconfig file, fuzz
	testing.  Move ability to name contexts and stmt_list per block
	ideas to a new "Nice to have" section and note that it might be
	better to go straight to gimple.
	Move code coverage to "Test suite" section.
	Add a "Probably not needed" section, moving some items to it.
	Note that we're still missing shift operators.
	Add idea that we could warn about unused objects in a context.

2014-09-23  David Malcolm  <dmalcolm@redhat.com>

	* docs/examples/tut03-toyvm/toyvm.c: Include <dejagnu.h>.
	Add missing typedef of compilation_state.
	(toyvm_function_parse): Add "name param.
	(test): New.
	(CHECK_NON_NULL): New, from harness.h
	(CHECK_VALUE): Likewise.
	(test_script): New.
	(PATH_TO_SCRIPTS): New define.
	(test_suite): New.
	(main): If called with no args, run the test suite.

2014-09-23  David Malcolm  <dmalcolm@redhat.com>

	* docs/conf.py (__read_file): New helper function, for
	extracting...
	(gcc_BASEVER): New variable, read from "BASE-VER" in gcc src dir.
	(gcc_DEVPHASE): Likewise, from file "DEV-PHASE".
	(gcc_DATESTAMP): Likewise, from file "DATESTAMP".
	(gcc_REVISION): Likewise, from file "REVISION" (if present).
	(version): Rather than hardcoding this variable, extract from file
	BASE-VER, via gcc_BASEVER local.
	(release): Likewise, building it up from the files read above.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

2014-09-22  David Malcolm  <dmalcolm@redhat.com>

	* docs/intro/tutorial01.rst: Remove stray "FIXME".
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

2014-09-22  David Malcolm  <dmalcolm@redhat.com>

	* docs/index.rst: Add internals/index.rst.
	* docs/internals/index.rst: New.
	* notes.txt: Update to reflect renaming of toplev_main to
	toplev::main.

2014-09-22  David Malcolm  <dmalcolm@redhat.com>

	* docs/_build/texinfo/libgccjit.texi: Regenerate.
	* docs/intro/install.rst: Reduce width of listing.
	* docs/intro/tutorial01.rst: Use <libgccjit.h> rather than
	"libgccjit.h" when including the header.
	* docs/intro/tutorial02.rst: Likewise.
	* docs/intro/tutorial03.rst: Clarify various sections; show
	effect of reducing optimization level down from 3 to 2.
	("Putting it all together"): Move to above...
	("Behind the curtain: optimizing away stack manipulation"):
	...this, and rename this to...
	("Behind the curtain: How does our code get optimized?"): ...and
	add more detail, and discussion of elimination of tail recursion.

2014-09-19  David Malcolm  <dmalcolm@redhat.com>

	* TODO.rst: Add detection of uninitialized variables, since
	this bit me when developing "toyvm".

	* docs/examples/tut03-toyvm/Makefile: New.
	* docs/examples/tut03-toyvm/factorial.toy: New.
	* docs/examples/tut03-toyvm/fibonacci.toy: New.
	* docs/examples/tut03-toyvm/toyvm.c: New.

	* docs/intro/index.rst: Add tutorial03.rst.
	* docs/intro/tutorial01.rst: Fix example of how to dump
	generated machine code.
	* docs/intro/tutorial03.rst: New.
	* docs/intro/factorial.png: New.

	* docs/_build/texinfo/libgccjit.texi: Regenerate.
	* docs/_build/texinfo/factorial.png: New (copied by sphinx from
	docs/intro/factorial.png).

2014-09-18  David Malcolm  <dmalcolm@redhat.com>

	* Make-lang.in (jit.install-common): Install libgccjit.pc to
	"$(DESTDIR)/$(libdir)/pkgconfig".
	* config-lang.in (outputs): Define this, adding jit/libgccjit.pc
	so that it makes it into AC_CONFIG_FILES and is thus generated from
	jit/libgccjit.pc.in at configure time.
	* docs/intro/install.rst ("Hello world"): Add discussion about the
	use of pkg-config when building against an install in
	a non-standard location.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.
	* libgccjit.pc.in: New.

2014-09-18  David Malcolm  <dmalcolm@redhat.com>

	* docs/index.rst: Split index out into two new files...
	* docs/intro/index.rst: New file.
	* docs/topics/index.rst: New file.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

2014-09-18  David Malcolm  <dmalcolm@redhat.com>

	* docs/_build/texinfo/Makefile: New file, generated by Sphinx, by
	running "make texinfo" in docs directory.
	* docs/_build/texinfo/libgccjit.texi: Likewise.
	* docs/_build/texinfo/sum-of-squares.png: Likewise.

2014-09-18  David Malcolm  <dmalcolm@redhat.com>

	* docs/conf.py (Options for HTML output): Update html_theme from
	"default" to "pyramid".

2014-09-18  David Malcolm  <dmalcolm@redhat.com>

	* docs/intro/install.rst: Markup fixes.
	* docs/intro/tutorial01.rst: Likewise.
	* docs/intro/tutorial02.rst: Likewise.
	* docs/topics/contexts.rst: Likewise.
	* docs/topics/expressions.rst: Likewise.
	* docs/topics/functions.rst: Likewise.
	* docs/topics/locations.rst: Likewise.
	* docs/topics/types.rst: Likewise.

2014-09-18  David Malcolm  <dmalcolm@redhat.com>

	* docs/examples/install-hello-world.c (main): Fix missing
	"return".
	* docs/examples/tut01-square.c (main): Likewise.
	* docs/examples/tut02-sum-of-squares.c (main): Likewise.

2014-09-17  David Malcolm  <dmalcolm@redhat.com>

	* docs/Makefile: New file.
	* docs/conf.py: New file.
	* docs/examples/install-hello-world.c: New file.
	* docs/examples/tut01-square.c: New file.
	* docs/examples/tut02-sum-of-squares.c: New file.
	* docs/index.rst: New file.
	* docs/intro/install.rst: New file.
	* docs/intro/sum-of-squares.png: New file.
	* docs/intro/tutorial01.rst: New file.
	* docs/intro/tutorial02.rst: New file.
	* docs/topics/contexts.rst: New file.
	* docs/topics/expressions.rst: New file.
	* docs/topics/functions.rst: New file.
	* docs/topics/locations.rst: New file.
	* docs/topics/objects.rst: New file.
	* docs/topics/results.rst: New file.
	* docs/topics/types.rst: New file.

2014-09-11  David Malcolm  <dmalcolm@redhat.com>

	* TODO.rst (Initial Release): Update for addition of myself as
	maintainer.

2014-09-10  David Malcolm  <dmalcolm@redhat.com>

	* TODO.rst (Test suite): Multithreaded test is done.

2014-09-10  David Malcolm  <dmalcolm@redhat.com>

	* dummy-frontend.c: Fix up for the header file flattening on
	trunk by adding includes of signop.h, tree-core.h, stor-layout.h,
	tree-ssa-alias.h, gimple-expr.h.
	(jit_langhook_write_globals): Update call to
	finalize_compilation_unit to symtab->finalize_compilation_unit to
	track change made on trunk in r214422.

	* internal-api.c: Fix up for the header file flattening on trunk
	by adding includes of gimple-expr.h, tree-ssa-alias.h,
	stringpool.h, stor-layout.h, print-tree.h, gimplify.h.
	(new_rvalue_from_int): Update call to real_from_integer.
	(gcc::jit::playback::wrapper::operator new): Use
	ggc_internal_cleared_alloc rather than
	ggc_internal_cleared_alloc_stat.
	(gcc::jit::playback::function::postprocess): Update call to
	cgraph_finalize_function tocgraph_node::finalize_function.
	(gcc::jit::playback::block::add_comment): Update call to
	ggc_internal_alloc_stat to ggc_internal_alloc.

2014-08-08  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_context_new_union_type): New entrypoint.
	(gcc_jit_lvalue_access_field): Rename first param from "struct_"
	to "struct_or_union".
	(gcc_jit_rvalue_access_field): Likewise.

	* libgccjit.c (gcc_jit_context_new_union_type): New entrypoint.

	* libgccjit.map (gcc_jit_context_new_union_type): New entrypoint.

	* internal-api.h (gcc::jit::recording::compound_type): New class
	(gcc::jit::recording::union): New class.
	(gcc::jit::playback::struct_): Rename this class to...
	(gcc::jit::playback::compound_type): ...this.
	(gcc::jit::recording::context::new_union_type): New method.
	(gcc::jit::recording::context): Rename field "m_structs" to
	"m_compound_types", generalizing from a vec <struct_ *> to a
	vec<compound_type *>.
	(gcc::jit::recording::field): Update field m_container from
	struct * to container_type *.
	(gcc::jit::recording::field::get_container): Generalize from
	struct_ * to container_type *.
	(gcc::jit::recording::field::set_container): Likewise.
	(gcc::jit::recording::compound_type): New subclass of type, to
	be a superclass of existing class struct_ and new class union_.
	(gcc::jit::recording::struct_::get_name): Move to...
	(gcc::jit::recording::compound_type::get_name): ...here.
	(gcc::jit::recording::struct_::get_loc): Move to...
	(gcc::jit::recording::compound_type::get_loc): ...here.
	(gcc::jit::recording::struct_::set_fields): Move to...
	(gcc::jit::recording::compound_type::set_fields): ...here.
	(gcc::jit::recording::struct_::dereference): Move to...
	(gcc::jit::recording::compound_type::dereference): ...here.
	(gcc::jit::recording::struct_::is_int): Move to...
	(gcc::jit::recording::compound_type::is_int): ...here.
	(gcc::jit::recording::struct_::is_float): Move to...
	(gcc::jit::recording::compound_type::is_float): ...here.
	(gcc::jit::recording::struct_::is_bool): Move to...
	(gcc::jit::recording::compound_type::is_bool): ...here.
	(gcc::jit::recording::struct_::is_pointer): Move to...
	(gcc::jit::recording::compound_type::is_pointer): ...here.
	(gcc::jit::recording::struct_::is_array): Move to...
	(gcc::jit::recording::compound_type::is_array): ...here.
	(gcc::jit::recording::struct_::playback_struct): Move to...
	(gcc::jit::recording::compound_type::playback_compound_type):
	...here, renaming and updating return type.
	(gcc::jit::recording::struct_): Inherit from compound_type,
	rather than just type.
	(gcc::jit::recording::fields): Update to work on compound_type *
	rather than struct_ *, renaming "m_struct" to "m_struct_or_union".
	(gcc::jit::recording::union): New subclass of compound_type.
	(gcc::jit::playback::context::new_struct_type): Generalize by
	renaming to...
	(gcc::jit::playback::context::new_compound_type): ...this, and
	and an "is_struct" bool param.
	(gcc::jit::playback::struct_): Generalize by renaming class to...
	(gcc::jit::playback::compound_type): ...this.

	* internal-api.c (gcc::jit::recording::context::context): Rename
	field "m_structs" to "m_compound_types".
	(gcc::jit::recording::context::new_struct_type): Likewise.
	(gcc::jit::recording::context::new_union_type): New method.
	(gcc::jit::recording::context::dump_to_file): Field "m_structs"
	is renamed "m_compound_types" and changes type from struct_ *
	to compound_type *.
	(gcc::jit::recording::compound_type::compound_type): New ctor,
	built from old body of gcc::jit::recording::struct_::struct_.
	(gcc::jit::recording::struct_::set_fields): Move class to...
	(gcc::jit::recording::compound_type::set_fields): ... here.
	(gcc::jit::recording::struct_::dereference): Move class to...
	(gcc::jit::recording::compound_type::dereference): ...here.
	(gcc::jit::recording::struct_::struct_): Reimplement by calling
	base class ctor.
	(gcc::jit::recording::struct_::replay_into): The playback hook
	is now "new_compound_type" and adds a bool, with true for
	"is_struct" (vs a union).
	(gcc::jit::recording::struct_::make_debug_string): "m_name" is
	now moved to base class and private, so use an accessor.
	(gcc::jit::recording::union_::union_): New function.
	(gcc::jit::recording::union_::replay_into): New function.
	(gcc::jit::recording::union_::make_debug_string): New function.
	(gcc::jit::recording::fields::fields): Update first param from
	struct_ * to compound_type *, and rename field "m_struct" to
	"m_struct_or_union".
	(gcc::jit::recording::fields::replay_into): "m_struct" is now
	"m_struct_or_union" and has a playback_compound_type rather
	than a playback_struct.
	(gcc::jit::recording::fields::write_to_dump): Update for
	renaming of m_struct to m_struct_or_union.
	(gcc::jit::playback::context::new_struct_type): Rename method
	to...
	(gcc::jit::playback::context::new_compound_type): this,
	generalizing so that it can make unions as well as structs; the
	underlying playback type is now called "compound_type".
	(gcc::jit::playback::struct_::set_fields): This method's class has
	changed name, so this is now...
	(gcc::jit::playback::compound_type::set_fields): ...this method.

	* TODO.rst: Unions are done.

2014-08-08  David Malcolm  <dmalcolm@redhat.com>

	* TODO.rst: Function ptrs are done.
	* internal-api.c
	(gcc::jit::recording::context::new_function_ptr_type): New method.
	(gcc::jit::recording::context::new_call_through_ptr): New method.
	(gcc::jit::recording::memento_of_get_pointer::make_debug_string):
	Add special-case handling of function pointer types.
	(gcc::jit::recording::function_type::make_debug_string_with_ptr):
	New method.
	(gcc::jit::recording::function_type::make_debug_string):
	Reimplement in terms of...
	(gcc::jit::recording::function_type::make_debug_string_with): New
	method, based on make_debug_string, but allowing for arbitrary
	text between the return type and the parameters.
	(gcc::jit::recording::call_through_ptr::call_through_ptr): New
	method.
	(gcc::jit::recording::call_through_ptr::replay_into): New method.
	(gcc::jit::recording::call_through_ptr::make_debug_string): New
	method.
	(gcc::jit::playback::context::new_call): Reimplement in terms of...
	(gcc::jit::playback::context::build_call): New method, using parts
	of old implementation of new_call, so that we can share this
	with...
	(gcc::jit::playback::context::new_call_through_ptr): New method.
	* internal-api.h
	(gcc::jit::recording::context::new_function_ptr_type): New method.
	(gcc::jit::recording::context::new_call_through_ptr): New method.
	(gcc::jit::recording::type::dyn_cast_function_type): New method.
	(gcc::jit::recording::function_type::dyn_cast_function_type): New
	method.
	(gcc::jit::recording::function_type::make_debug_string_with_ptr):
	New method.
	(gcc::jit::recording::function_type::make_debug_string_with): New
	method.
	(gcc::jit::recording::call_through_ptr): New subclass of rvalue.
	(gcc::jit::playback::context::new_call_through_ptr): New method.
	(gcc::jit::playback::context::build_call): New method.
	* libgccjit.c (gcc_jit_context_new_function_ptr_type): New
	function.
	(gcc_jit_context_new_call_through_ptr): New function.
	* libgccjit.h (gcc_jit_context_new_function_ptr_type): New
	function.
	(gcc_jit_context_new_call_through_ptr): New function.
	* libgccjit.map (gcc_jit_context_new_call_through_ptr): New function.
	(gcc_jit_context_new_function_ptr_type): New function.

2014-07-25  David Malcolm  <dmalcolm@redhat.com>

	* TODO.rst (error-checking): Remove various items that either
	already were implemented, or are implemented by this commit.
	* internal-api.h (gcc::jit::recording::type::is_numeric): New.
	* libgccjit.c (RETURN_NULL_IF_FAIL_NONNULL_NUMERIC_TYPE): New macro.
        (gcc_jit_context_new_rvalue_from_int): Verify that numeric_type is
	indeed numeric.
	(gcc_jit_context_zero): Likewise.
	(gcc_jit_context_one): Likewise.
	(gcc_jit_context_new_rvalue_from_double): Likewise.
	(gcc_jit_context_new_array_access): Likewise for type of "index".

2014-07-14  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::recording::context::new_array_type):
	Reject attempts to create an array of a struct if the fields of
	the struct haven't yet been set.
	* internal-api.h (gcc::jit::recording::type::dyn_cast_struct): New
	virtual function.
	(gcc::jit::recording::struct_::dyn_cast_struct): New, overriding
	for this subclass.
	(gcc::jit::recording::struct_::get_name): New.

2014-05-07  David Malcolm  <dmalcolm@redhat.com>

	* Make-lang.in (LIBGCCJIT_LINKER_NAME): New.
	(LIBGCCJIT_VERSION_NUM): New.
	(LIBGCCJIT_MINOR_NUM): New.
	(LIBGCCJIT_RELEASE_NUM): New.
	(LIBGCCJIT_SONAME): New.
	(LIBGCCJIT_FILENAME): New.
	(LIBGCCJIT_LINKER_NAME_SYMLINK): New.
	(LIBGCCJIT_SONAME_SYMLINK): New.
	(jit): Add symlink targets.
	(libgccjit.so): Convert to...
	(LIBGCCJIT_FILENAME): ...and add a soname.
	(jit.install-common): Install the library with a soname, and
	symlinks.  Install libgccjit++.h.

2014-04-25  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::playback::context::compile): Put
	any output of dlerror through the add_error method, rather
	than merely printing it to stderr, so that the error is also
	recorded on the context.

2014-03-19  Tom Tromey  <tromey@redhat.com>

	* internal-api.c (compile): Use auto_timevar.

2014-03-19  Tom Tromey  <tromey@redhat.com>

	* internal-api.c (compile): Use toplev, not toplev_options.
	Simplify.

2014-03-19  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::recording::context::add_error_va):
	Rename local "progname" to "ctxt_progname" to avoid shadowing
	the related global, for clarity.
	(gcc::jit::playback::context::compile): Likewise.

2014-03-19  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::recording::memento_of_get_pointer::
	accepts_writes_from): Accept writes from pointers, but not arrays.

	* internal-api.h (gcc::jit::recording::type::is_pointer): New.
	(gcc::jit::recording::type::is_array): New.
	(gcc::jit::recording::memento_of_get_type::accepts_writes_from):
	Allow (void *) to accept writes of pointers, but not arrays.
	(gcc::jit::recording::memento_of_get_type::is_pointer): New.
	(gcc::jit::recording::memento_of_get_type::is_array): New.
	(gcc::jit::recording::memento_of_get_pointer::is_pointer): New.
	(gcc::jit::recording::memento_of_get_pointer::is_array): New.
	(gcc::jit::recording::memento_of_get_const::is_pointer): New.
	(gcc::jit::recording::memento_of_get_const::is_array): New.
	(gcc::jit::recording::memento_of_get_volatile::is_pointer): New.
	(gcc::jit::recording::memento_of_get_volatile::is_array): New.
	(gcc::jit::recording::array_type::is_pointer): New.
	(gcc::jit::recording::array_type::is_array): New.
	(gcc::jit::recording::function_type::is_pointer): New.
	(gcc::jit::recording::function_type::is_array): New.
	(gcc::jit::recording::struct_::is_pointer): New.
	(gcc::jit::recording::struct_::is_array): New.

	* libgccjit.c (gcc_jit_context_new_rvalue_from_ptr): Require the
	pointer_type to be a pointer, not an array.
	(gcc_jit_context_null): Likewise.
	(is_valid_cast): Require pointer casts to be between pointer types,
	not arrays.
	(gcc_jit_context_new_array_access): Update error message from "not
	a pointer" to "not a pointer or array".
	(gcc_jit_rvalue_dereference_field): Require the pointer arg to be
	of pointer type, not an array.
	(gcc_jit_rvalue_dereference): Likewise.

2014-03-14  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.c (is_valid_cast): Permit casts between pointer types.

	* internal-api.c (convert): Report more information if this ever
	occurs, and make the error occur on the playback context, so that
	it makes the gcc_jit_result be NULL.
	(gcc::jit::playback::context::build_cast): Handle pointers.  Report
	more information if an unhandlable cast reaches here.

2014-03-13  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.c (is_valid_cast): New.
	(gcc_jit_context_new_cast): Check for compatible types.

	* internal-api.c (gcc::jit::recording::memento_of_get_type::
	is_int): New.
	(gcc::jit::recording::memento_of_get_type::is_float): New.
	(gcc::jit::recording::memento_of_get_type::is_bool): New.

	* internal-api.h (gcc::jit::recording::type::is_int): New.
	(gcc::jit::recording::type::is_float): New.
	(gcc::jit::recording::type::is_bool): New.

	(gcc::jit::recording::memento_of_get_type::is_int): New.
	(gcc::jit::recording::memento_of_get_type::is_float): New.
	(gcc::jit::recording::memento_of_get_type::is_bool): New.

	(gcc::jit::recording::memento_of_get_pointer::is_int): New.
	(gcc::jit::recording::memento_of_get_pointer::is_float): New.
	(gcc::jit::recording::memento_of_get_pointer::is_bool): New.

	(gcc::jit::recording::memento_of_get_const::is_int): New.
	(gcc::jit::recording::memento_of_get_const::is_float): New.
	(gcc::jit::recording::memento_of_get_const::is_bool): New.

	(gcc::jit::recording::memento_of_get_volatile::is_int): New.
	(gcc::jit::recording::memento_of_get_volatile::is_float): New.
	(gcc::jit::recording::memento_of_get_volatile::is_bool): New.

	(gcc::jit::recording::array_type::is_int): New.
	(gcc::jit::recording::array_type::is_float): New.
	(gcc::jit::recording::array_type::is_bool): New.

	(gcc::jit::recording::function_type::is_int): New.
	(gcc::jit::recording::function_type::is_float): New.
	(gcc::jit::recording::function_type::is_bool): New.

	(gcc::jit::recording::struct_::is_int): New.
	(gcc::jit::recording::struct_::is_float): New.
	(gcc::jit::recording::struct_::is_bool): New.

2014-03-13  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::recording::context::set_str_option):
	Provide NULL recording::location to add_error.
	(gcc::jit::recording::context::set_int_option): Likewise.
	(gcc::jit::recording::context::set_bool_option): Likewise.
	(gcc::jit::playback::context::compile): Likewise.
	(gcc::jit::recording::context::add_error): Add recording::location
	param.
	(gcc::jit::recording::context::add_error_va): Likewise; print it
	when present; add "error: " to stderr messages.
	(gcc::jit::recording::location::replay_into): Provide
	recording::location to the playback::location.

	(gcc::jit::recording::function::validate): Add locations to the
	add_error invocations.
	(gcc::jit::recording::block::validate): Likewise.
	(gcc::jit::playback::context::get_type): Likewise.
	(gcc::jit::playback::context::new_unary_op): Likewise.
	(gcc::jit::playback::context::new_binary_op): Likewise.
	(gcc::jit::playback::context::new_comparison): Likewise.

	(gcc::jit::recording::block::get_loc): New.
	(gcc::jit::recording::block::get_first_statement): New.

	(gcc::jit::playback::context::build_cast): Pass in higher-level
	arguments in the hope of eventually providing better error
	messages when a cast isn't possible.
	(gcc::jit::playback::context::new_cast): As above.

	(gcc::jit::playback::context::add_error): Add playback::location
	parameter, using it to provide the corresponding
	recording::location (if any) when reporting the error to the
	recording::context.
	(gcc::jit::playback::context::add_error_va): Likewise.
	(gcc::jit::playback::context::new_location): Likewise.
	(gcc::jit::playback::source_line::get_location): Likewise.
	(gcc::jit::playback::location::location): Likewise.

	* internal-api.h (gcc::jit::recording::context::add_error): Add
	recording::location param.
	(gcc::jit::recording::context::add_error_va): Likewise.

	(gcc::jit::recording::context::errors_occurred): Also consider
	errors that occur on a parent or ancestor context, recursively.

	(gcc::jit::recording::block::get_loc): New.
	(gcc::jit::recording::block::get_first_statement): New.
	(gcc::jit::recording::statement::get_loc): New.

	(gcc::jit::playback::context::new_location): Add recording::location
	parameter.

	(gcc::jit::playback::context::add_error): Add playback::location
	parameter.
	(gcc::jit::playback::context::add_error_va): Likewise.

	(gcc::jit::playback::context::build_cast): Pass in higher-level
	arguments in the hope of eventually providing better error
	messages when a cast isn't possible.

	(gcc::jit::playback::source_line::get_location): Add
	recording::location parameter.
	(gcc::jit::playback::location::location): Likewise.
	(gcc::jit::playback::location::get_recording_loc): New.
	(gcc::jit::playback::location::m_recording_loc): New.

	* jit-builtins.c (gcc::jit::builtins_manager::get_builtin_function):
	Provide NULL recording::location to add_error.
	(gcc::jit::builtins_manager::make_primitive_type): Likewise.

	* libgccjit.c (RETURN_VAL_IF_FAIL): Add location argument.
	(RETURN_VAL_IF_FAIL_PRINTF1): Likewise.
	(RETURN_VAL_IF_FAIL_PRINTF2): Likewise.
	(RETURN_VAL_IF_FAIL_PRINTF3): Likewise.
	(RETURN_VAL_IF_FAIL_PRINTF4): Likewise.
	(RETURN_VAL_IF_FAIL_PRINTF6): Likewise.
	(RETURN_NULL_IF_FAIL): Likewise.
	(RETURN_NULL_IF_FAIL_PRINTF1): Likewise.
	(RETURN_NULL_IF_FAIL_PRINTF2): Likewise.
	(RETURN_NULL_IF_FAIL_PRINTF3): Likewise.
	(RETURN_NULL_IF_FAIL_PRINTF4): Likewise.
	(RETURN_NULL_IF_FAIL_PRINTF6): Likewise.
	(RETURN_IF_FAIL): Likewise.
	(RETURN_IF_FAIL_PRINTF1): Likewise.
	(RETURN_IF_FAIL_PRINTF2): Likewise.
	(RETURN_IF_FAIL_PRINTF4): Likewise.
	(RETURN_IF_NOT_VALID_BLOCK): Likewise.
	(RETURN_NULL_IF_NOT_VALID_BLOCK): Likewise.

	(jit_error): Likewise.

	(gcc_jit_location_as_object): Provided location argument to
	error-handling macros.
	(gcc_jit_type_as_object): Likewise.
	(gcc_jit_context_get_type): Likewise.
	(gcc_jit_context_get_int_type): Likewise.
	(gcc_jit_type_get_pointer): Likewise.
	(gcc_jit_type_get_const): Likewise.
	(gcc_jit_type_get_volatile): 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_as_type): Likewise.
	(gcc_jit_struct_set_fields): Likewise.
	(gcc_jit_context_new_param): Likewise.
	(gcc_jit_param_as_object): Likewise.
	(gcc_jit_param_as_lvalue): Likewise.
	(gcc_jit_param_as_rvalue): Likewise.
	(gcc_jit_context_new_function): Likewise.
	(gcc_jit_context_get_builtin_function): Likewise.
	(gcc_jit_function_as_object): Likewise.
	(gcc_jit_function_get_param): Likewise.
	(gcc_jit_function_dump_to_dot): Likewise.
	(gcc_jit_function_new_block): Likewise.
	(gcc_jit_block_as_object): Likewise.
	(gcc_jit_block_get_function): Likewise.
	(gcc_jit_context_new_global): Likewise.
	(gcc_jit_lvalue_as_object): Likewise.
	(gcc_jit_lvalue_as_rvalue): Likewise.
	(gcc_jit_rvalue_as_object): Likewise.
	(gcc_jit_rvalue_get_type): 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_cast): Likewise.
	(gcc_jit_context_new_array_access): Likewise.
	(gcc_jit_object_get_context): Likewise.
	(gcc_jit_object_get_debug_string): Likewise.
	(gcc_jit_lvalue_access_field): Likewise.
	(gcc_jit_rvalue_access_field): Likewise.
	(gcc_jit_rvalue_dereference_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_compile): Likewise.
	(gcc_jit_context_dump_to_file): Likewise.
	(gcc_jit_context_get_first_error): Likewise.
	(gcc_jit_result_get_code): Likewise.
	(gcc_jit_result_get_code): Likewise.
	(gcc_jit_result_release): Likewise.

2014-03-10  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit++.h (gccjit::context::new_rvalue): Make these
	methods const.
	(gccjit::context::zero): Likewise.
	(gccjit::context::one): Likewise.
	(gccjit::function::get_param): Likewise.

2014-03-10  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit++.h (gccjit::error): New class, for exceptions.
	(gccjit::context::get_inner_context): New accessor, so that we
	can...
	(gccjit::context::m_inner_ctxt): Make private.
	(gccjit::context::context): Throw a gccjit::error if a NULL
	context is passed in.
	(gccjit::context::compile): Throw a gccjit::error if a NULL
	result is returned from the C API, which indicates an error.
	(gccjit::object::object): Throw a gccjit::error if a NULL
	object is passed in, since that indicates that an error has
	occurred.
	(gccjit::location::location): In the default ctor, call the
	base class default ctor rather than passing in a NULL to the
	single-argument ctor, since the latter now indicates an error
	has occurred at the C API level.
	(gccjit::field::field): Likewise.
	(gccjit::type::type): Likewise.
	(gccjit::function::function): Likewise.
	(gccjit::block::block): Likewise.
	(gccjit::rvalue::rvalue): Likewise.

2014-03-07  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (enum gcc_jit_function_kind): Add
	GCC_JIT_FUNCTION_ALWAYS_INLINE.
	* internal-api.c (gcc::jit::recording::function::write_to_dump):
	Handle GCC_JIT_FUNCTION_ALWAYS_INLINE.
	(gcc::jit::playback::context::new_function): Likewise.
	(gcc::jit::playback::context::postprocess): Handle
	GCC_JIT_FUNCTION_INTERNAL and GCC_JIT_FUNCTION_ALWAYS_INLINE by
	clearing DECL_EXTERNAL and TREE_PUBLIC.  Doing so fixes the
	"undefined symbol" bug seen with GCC_JIT_FUNCTION_INTERNAL.
	* TODO.rst: Update.

2014-03-07  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit++.h (gccjit::context::new_global): New.

2014-03-07  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::playback::context::handle_locations):
	Add a disabled call to line_table_dump, in case it's handy for
	debugging in the future.
	(gcc::jit::playback::context::set_tree_location): Assert that
	the location is non-NULL.
	(gcc::jit::playback::location::location): Initialize m_src_loc
	to UNKNOWN_LOCATION.  This field should always be overwritten by
	handle_locations before use, but given recent issues with bogus
	locations it seems safer to initialize it.

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

	* internal-api.c (gcc::jit::recording::context::
	disassociate_from_playback): Recursively visit parent contexts.

2014-03-05  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_function_dump_to_dot): New.
	* libgccjit.map (gcc_jit_function_dump_to_dot): New.
	* libgccjit++.h (gccjit::function::dump_to_dot): New.
	* libgccjit.c (gcc_jit_function_dump_to_dot): New.
	* internal-api.h (gcc::jit::recording::function::dump_to_dot): New.
	(gcc::jit::recording::block::block): Add m_index member.
	(gcc::jit::recording::block::dump_to_dot): New.
	(gcc::jit::recording::block::dump_edges_to_dot): New.
	* internal-api.c (gcc::jit::recording::function::new_block): Give
	each block an index.
	(gcc::jit::recording::function::dump_to_dot): New.
	(gcc::jit::recording::block::dump_to_dot): New.
	(gcc::jit::recording::block::dump_edges_to_dot): New.

2014-03-04  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::recording::memento_of_get_pointer::
	accepts_writes_from): Avoid segfaulting when the argument is not
	of pointer type.
	* internal-api.h (gcc::jit::recording::accepts_writes_from): Add
	an assertion.
	* libgccjit.c (gcc_jit_context_new_comparison): Strip away const
	and volatile when comparing input types.

2014-03-04  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_type_get_volatile): New.
	* libgccjit.map (gcc_jit_type_get_volatile): New.
	* libgccjit.c (gcc_jit_type_get_volatile): New.
	* libgccjit++.h (gccjit::type::get_volatile): New.
	* internal-api.c (gcc::jit::recording::type::get_volatile): New.
	(gcc::jit::recording::memento_of_get_volatile::replay_into): New.
	(gcc::jit::recording::memento_of_get_volatile::make_debug_string): New.
	* internal-api.h (gcc::jit::recording::type::get_volatile): New.
	(gcc::jit::recording::type::accepts_writes_from): Strip off
	qualifiers such as "const" and "volatile" from the source type.
	(gcc::jit::recording::memento_of_get_volatile): New class.
	(gcc::jit::playback::type::get_volatile): New.
	* TODO.rst: Update.

2014-03-03  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit++.h (gccjit::function::operator()): Add overload for
	a call with 3 arguments.
	(gccjit::block::add_call): Likewise for 4 arguments.
	(gccjit::rvalue::cast_to): New method.
	(gccjit::rvalue::operator[]): New methods.

2014-02-28  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.c (gcc_jit_context_new_binary_op): Check that the
	operands have the same type.
	(gcc_jit_context_new_comparison): Likewise.

2014-02-28  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_context_new_cast): New.
	* libgccjit.map (gcc_jit_context_new_cast): New.
	* libgccjit++.h (gccjit::context::new_cast): New method.
	* libgccjit.c (gcc_jit_context_new_cast): New.

	* internal-api.h (gcc::jit::recording::context::new_cast): New method.
	(gcc::jit::recording::cast): New subclass of rvalue.
	(gcc::jit::playback::context::new_cast): New method.
	(gcc::jit::playback::context::build_cast): New method.

	* internal-api.c (convert): New.
	(gcc::jit::recording::context::new_cast): New.
	(gcc::jit::recording::cast::replay_into): New.
	(gcc::jit::recording::cast::make_debug_string): New.
	(gcc::jit::playback::context::build_cast): New.
	(gcc::jit::playback::context::new_cast): New.

	* TODO.rst: Update.

2014-02-28  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_block_get_function): New.
	* libgccjit.map (gcc_jit_block_get_function): New.
	* libgccjit++.h (gccjit::block::get_function): New method.
	* libgccjit.c (gcc_jit_block_get_function): New.

2014-02-27  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_label): Delete in favor of...
	(gcc_jit_block): New type.
	(gcc_jit_loop): Delete.

	(gcc_jit_function_new_forward_label): Delete in favor of...
	(gcc_jit_function_new_block): New.

	(gcc_jit_label_as_object): Delete in favor of...
	(gcc_jit_block_as_object): New.

	(gcc_jit_function_add_eval): Delete in favor of...
	(gcc_jit_block_add_eval): New.

	(gcc_jit_function_add_assignment): Delete in favor of...
	(gcc_jit_block_add_assignment): New.

	(gcc_jit_function_add_assignment_op): Delete in favor of...
	(gcc_jit_block_add_assignment_op): New.

	(gcc_jit_function_add_comment): Delete in favor of...
	(gcc_jit_block_add_comment): New.

	(gcc_jit_label_as_object): Delete in favor of...
	(gcc_jit_block_as_object): New.

	(gcc_jit_function_add_conditional): Delete in favor of...
	(gcc_jit_block_end_with_conditional): New.

	(gcc_jit_function_add_jump): Delete in favor of...
	(gcc_jit_block_end_with_jump): New.

	(gcc_jit_function_add_return): Delete in favor of...
	(gcc_jit_block_end_with_return): New.

	(gcc_jit_function_add_void_return): Delete in favor of...
	(gcc_jit_block_end_with_void_return): New.

	(gcc_jit_function_new_loop): Delete.
	(gcc_jit_function_new_loop_over_range): Delete.
	(gcc_jit_loop_as_object): Delete.
	(gcc_jit_loop_end): Delete.

	* libgccjit.map (gcc_jit_function_add_assignment): Delete in favor of...
	(gcc_jit_block_add_assignment): New.

	(gcc_jit_function_add_assignment_op): Delete in favor of...
	(gcc_jit_block_add_assignment_op): New.

	(gcc_jit_function_add_comment): Delete in favor of...
	(gcc_jit_block_add_comment): New.

	(gcc_jit_function_add_eval): Delete in favor of...
	(gcc_jit_block_add_eval): New.

	(gcc_jit_label_as_object): Delete in favor of...
	(gcc_jit_block_as_object): New.

	(gcc_jit_function_add_conditional): Delete in favor of...
	(gcc_jit_block_end_with_conditional): New.

	(gcc_jit_function_add_jump): Delete in favor of...
	(gcc_jit_block_end_with_jump): New.

	(gcc_jit_function_add_return): Delete in favor of...
	(gcc_jit_block_end_with_return): New.

	(gcc_jit_function_add_void_return): Delete in favor of...
	(gcc_jit_block_end_with_void_return): New.

	(gcc_jit_function_add_label): Delete in favor of...
	(gcc_jit_function_new_block): New.
	(gcc_jit_function_new_forward_label): Delete.
	(gcc_jit_function_place_forward_label): Delete.

	(gcc_jit_function_new_loop): Delete.
	(gcc_jit_function_new_loop_over_range): Delete.
	(gcc_jit_loop_as_object): Delete.
	(gcc_jit_loop_end): Delete.

	* libgccjit.c (gcc_jit_label): Delete in favor of...
	(gcc_jit_block): New type.
	(gcc_jit_loop): Delete.

	(RETURN_IF_NOT_FUNC_DEFINITION): Delete in favor of...
	(RETURN_IF_NOT_VALID_BLOCK): New macro.
	(RETURN_NULL_IF_NOT_FUNC_DEFINITION): Delete in favor of...
	(RETURN_NULL_IF_NOT_VALID_BLOCK): New macro.

	(gcc_jit_function_new_forward_label): Delete in favor of...
	(gcc_jit_function_new_block): New.

	(gcc_jit_label_as_object): Delete in favor of...
	(gcc_jit_block_as_object): New.

	(gcc_jit_rvalue_dereference_field): Ensure that field has been
	placed.

	(gcc_jit_function_add_label): Delete
	(gcc_jit_function_place_forward_label): Delete.

	(gcc_jit_function_add_eval): Delete in favor of...
	(gcc_jit_block_add_eval): New.

	(gcc_jit_function_add_assignment): Delete in favor of...
	(gcc_jit_block_add_assignment): New.

	(gcc_jit_function_add_assignment_op): Delete in favor of...
	(gcc_jit_block_add_assignment_op): New.

	(gcc_jit_function_add_conditional): Delete in favor of...
	(gcc_jit_block_end_with_conditional): New.

	(gcc_jit_function_add_comment): Delete in favor of...
	(gcc_jit_block_add_comment): New.

	(gcc_jit_function_add_jump): Delete in favor of...
	(gcc_jit_block_end_with_jump): New.

	(gcc_jit_function_add_return): Delete in favor of...
	(gcc_jit_block_end_with_return): New.

	(gcc_jit_function_add_void_return): Delete in favor of...
	(gcc_jit_block_end_with_void_return): New.

	(gcc_jit_function_new_loop): Delete.
	(gcc_jit_function_new_loop_over_range): Delete.
	(gcc_jit_loop_as_object): Delete.
	(gcc_jit_loop_end): Delete.

	* internal-api.h (gcc::jit::recording::label): Delete class in
	favor of...
	(gcc::jit::recording::block): New class.
	(gcc::jit::recording::loop): Delete class.
	(gcc::jit::recording::loop_end): Delete class.

	(gcc::jit::playback::label): Delete class in favor of...
	(gcc::jit::playback::block): New class.

	(gcc::jit::playback::loop): Delete class.

	(gcc::jit::recording::playback_label): Delete function in favor of...
	(gcc::jit::recording::playback_block): New function.

	(gcc::jit::recording::context::validate): New.

	(gcc::jit::recording::function::new_forward_label): Delete method.
	(gcc::jit::recording::function::add_eval): Delete method in favor
	of method of new gcc::jit::recording::block class.
	(gcc::jit::recording::function::add_assignment): Likewise.
	(gcc::jit::recording::function::add_assignment_op): Likewise.
	(gcc::jit::recording::function::add_comment): Likewise.
	(gcc::jit::recording::function::add_conditional): Likewise.
	(gcc::jit::recording::function::place_forward_label): Likewise.
	(gcc::jit::recording::function::add_jump): Likewise.
	(gcc::jit::recording::function::add_return): Likewise.

	(gcc::jit::recording::function::add_label): Delete method in favor of...
	(gcc::jit::recording::function::new_block): New method.

	(gcc::jit::recording::function::new_loop): Delete method.

	(gcc::jit::recording::function::validate): New method.
	(gcc::jit::recording::function::m_activity): Delete field in favor of...
	(gcc::jit::recording::function::m_blocks): New field.

	(gcc::jit::recording::statement::get_successor_blocks): New method.
	(gcc::jit::recording::statement::write_to_dump): Make public.
	(gcc::jit::recording::statement::statement): Accept a block rather
	than a function.
	(gcc::jit::recording::statement::playback_function): Delete.
	(gcc::jit::recording::statement::get_block): New.
	(gcc::jit::recording::statement::m_func): Delete in favor of...
	(gcc::jit::recording::statement::m_block): ...this.

	(gcc::jit::recording::eval::eval): Accept a block rather than a
	function.
	(gcc::jit::recording::assignment::assignment): Likewise.
	(gcc::jit::recording::assignment_op::assignment_op): Likewise.
	(gcc::jit::recording::comment::comment): Likewise.
	(gcc::jit::recording::return::return): Likewise.
	(gcc::jit::recording::conditional::conditional): Likewise; accept
	blocks rather than labels.
	(gcc::jit::recording::jump::jump): Likewise.
	(gcc::jit::recording::conditional::get_successor_blocks): New.
	(gcc::jit::recording::jump::get_successor_blocks): New.

	(gcc::jit::playback::function::new_forward_label): Delete method
	in favor of...
	(gcc::jit::playback::function::new_block): New method.
	(gcc::jit::playback::function::build_stmt_list): New method.
	(gcc::jit::playback::function::m_blocks): New field.

	* libgccjit++.h (gccjit::label): Delete class in favor of...
	(gccjit::block): New class.
	(gccjit::function::new_forward_label): Delete methods in favor of...
	(gccjit::function::new_block): New methods.
	(gccjit::function::add_comment): Delete methods in favor of methods
	of new class gccjit::block.
	(gccjit::function::add_conditional): Likewise.
	(gccjit::function::add_label): Likewise.
	(gccjit::function::place_forward_label): Likewise.
	(gccjit::function::add_jump): Likewise.
	(gccjit::function::add_return): Likewise.
	(gccjit::function::add_call): Likewise.

	* internal-api.c (gcc::jit::recording::playback_label): Delete in
	favor of...
	(gcc::jit::recording::playback_block): New.
	(gcc::jit::recording::context::compile): Validate.
	(gcc::jit::recording::context::validate): New.
	(gcc::jit::recording::function::function): Update.
	(gcc::jit::recording::function::new_forward_label): Delete.
	(gcc::jit::recording::function::add_eval): Delete.
	(gcc::jit::recording::function::add_assignment): Delete.
	(gcc::jit::recording::function::add_assignment_op): Delete.
	(gcc::jit::recording::function::new_block): New.
	(gcc::jit::recording::function::add_comment): Delete.
	(gcc::jit::ecording::function::add_conditional): Delete.
	(gcc::jit::recording::function::add_label): Delete.
	(gcc::jit::recording::function::place_forward_label): Delete.
	(gcc::jit::recording::function::add_jump): Delete.
	(gcc::jit::recording::function::add_return): Delete.
	(gcc::jit::recording::function::new_loop): Delete.
	(gcc::jit::recording::function::write_to_dump): Port to block-based
	representation.
	(gcc::jit::recording::function::validate): New.
	(gcc::jit::recording::block::add_eval): New.
	(gcc::jit::recording::block::add_assignment): New.
	(gcc::jit::recording::label::replay_into): Delete.
	(gcc::jit::recording::block::add_assignment_op): New.
	(gcc::jit::recording::block::add_comment): New.
	(gcc::jit::recording::block::end_with_conditional): New.
	(gcc::jit::recording::block::end_with_jump): New.
	(gcc::jit::recording::block::end_with_return): New.
	(gcc::jit::recording::block::write_to_dump): New.
	(gcc::jit::recording::block::validate): New.
	(gcc::jit::recording::block::get_last_statement): New.
	(gcc::jit::recording::block::get_successor_blocks): New.
	(gcc::jit::recording::block::replay_into): New.
	(gcc::jit::recording::label::make_debug_string): Delete.
	(gcc::jit::recording::block::make_debug_string): New.
	(gcc::jit::recording::statement::get_successor_blocks): New.
	(gcc::jit::recording::eval::replay_into): Port to block-based
	representation.
	(gcc::jit::recording::assignment::replay_into): Likewise.
	(gcc::jit::recording::assignment_op::replay_into): Likewise.
	(gcc::jit::recording::comment::replay_into): Likewise.
	(gcc::jit::recording::conditional::replay_into): Likewise.
	(gcc::jit::recording::jump::replay_into): Likewise.
	(gcc::jit::recording::return_::replay_into): Likewise.

	(gcc::jit::recording::conditional::get_successor_blocks): New.
	(gcc::jit::recording::place_label::place_label): Delete.
	(gcc::jit::recording::place_label::replay_into): Delete.
	(gcc::jit::recording::place_label::make_debug_string): Delete.
	(gcc::jit::recording::place_label::write_to_dump): Delete.

	(gcc::jit::recording::jump::get_successor_blocks): New.
	(gcc::jit::recording::return_::get_successor_blocks): New.

	(gcc::jit::recording::loop::replay_into): Delete.
	(gcc::jit::recording::loop::make_debug_string): Delete.
	(gcc::jit::recording::loop::end): Delete.
	(gcc::jit::recording::loop_end::replay_into): Delete.
	(gcc::jit::recording::loop_end::make_debug_string): Delete.

	(gcc::jit::playback::function::new_forward_label): Delete.
	(gcc::jit::playback::function::new_block): New.
	(gcc::jit::playback::function::build_stmt_list): New.
	(gcc::jit::playback::function::add_eval): Replace with...
	(gcc::jit::playback::block::add_eval): New.
	(gcc::jit::playback::function::add_assignment): Replace with...
	(gcc::jit::playback::block::add_assignment): New.
	(gcc::jit::playback::function::add_comment): Replace with...
	(gcc::jit::playback::block::add_comment): New, reimplementing,
	given that we no longer have labels.
	(gcc::jit::playback::function::add_conditional): Replace with...
	(gcc::jit::playback::block::add_conditional): New, reworking,
	given that on_false can no longer be NULL.
	(gcc::jit::playback::function::add_label): Delete.
	(gcc::jit::playback::function::place_forward_label): Delete.
	(gcc::jit::playback::function::add_jump): Replace with...
	(gcc::jit::playback::block::add_jump): New.
	(gcc::jit::playback::function::add_return): Replace with...
	(gcc::jit::playback::block::add_return): New.
	(gcc::jit::playback::function::new_loop): Delete.
	(gcc::jit::playback::label::label): Replace with...
	(gcc::jit::playback::block::block): ...this.

	(gcc::jit::playback::loop::loop): Delete.
	(gcc::jit::playback::loop::end): Delete.

	(gcc::jit::playback::context::replay): Call each function's
	build_stmt_list.

	* TODO.rst: Update

2014-02-25  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_function_add_void_return): New.
	* libgccjit.map (gcc_jit_function_add_void_return): New.
	* libgccjit.c (gcc_jit_function_add_void_return): New.
	* libgccjit++.h (add_return): Add overloaded variant with no
	rvalue, calling gcc_jit_function_add_void_return.

	* internal-api.c (gcc::jit::recording::function::add_return): Add
	comment that rvalue could be NULL.
	(gcc::jit::playback::function::add_return): Support rvalue being
	NULL.

2014-02-25  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.h (gcc::jit::playback::function): Add field
	m_inner_block.

	* internal-api.c (gcc::jit::playback::function::function):
	Create BLOCK here and link it to the BIND_EXPR.
	(gcc::jit::playback::function::gt_ggc_mx): Walk m_inner_block.
	(gcc::jit::playback::function::postprocess): Set up BLOCK_VARS on
	the block, so that the local variables make it into the debuginfo.

2014-02-24  Philip Herron <redbrain@gcc.gnu.org>

	* Make-lang.in (jit.install-common): Implement.

2014-02-21  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_context_dump_to_file): New.
	* libgccjit.map (gcc_jit_context_dump_to_file): New.
	* libgccjit.c (gcc_jit_context_dump_to_file): New.
	* libgccjit++.h (gccjit::context::dump_to_file): New.

	* internal-api.h (gcc::jit::dump): New class.
	(gcc::jit::recording::playback_location): Add a replayer argument,
	so that playback locations can be created before playback statements.
	(gcc::jit::recording::location::playback_location): Likewise.
	(gcc::jit::recording::statement::playback_location): Likewise.
	(gcc::jit::recording::context::dump_to_file): New.
	(gcc::jit::recording::context::m_structs): New field, for use by
	dump_to_file.
	(gcc::jit::recording::context::m_functions): Likewise.
	(gcc::jit::recording::memento::write_to_dump): New virtual function.
	(gcc::jit::recording::field::write_to_dump): New.
	(gcc::jit::recording::fields::write_to_dump): New.
	(gcc::jit::recording::function::write_to_dump): New.
	(gcc::jit::recording::function::m_locals): New field for use by
	write_to_dump.
	(gcc::jit::recording::function::m_activity): Likewise.
	(gcc::jit::recording::local::write_to_dump): New.
	(gcc::jit::recording::statement::write_to_dump): New.
	(gcc::jit::recording::place_label::write_to_dump): New.

	* internal-api.c (gcc::jit::dump::dump): New.
	(gcc::jit::dump::~dump): New.
	(gcc::jit::dump::write): New.
	(gcc::jit::dump::make_location): New.
	(gcc::jit::recording::playback_location): Add a replayer argument,
	so that playback locations can be created before playback statements.

	(gcc::jit::recording::context::context): Initialize new fields.
	(gcc::jit::recording::function::function): Likewise.

	(gcc::jit::recording::context::new_struct_type): Add struct to the
	context's m_structs vector.
	(gcc::jit::recording::context::new_function): Add function to the
	context's m_functions vector.
	(gcc::jit::recording::context::dump_to_file): New.
	(gcc::jit::recording::memento::write_to_dump): New.
	(gcc::jit::recording::field::write_to_dump): New.
	(gcc::jit::recording::fields::write_to_dump): New.
	(gcc::jit::recording::function::write_to_dump): New.
	(gcc::jit::recording::local::write_to_dump): New.
	(gcc::jit::recording::statement::write_to_dump): New.
	(gcc::jit::recording::place_label::write_to_dump): New.

	(gcc::jit::recording::array_type::replay_into): Pass on replayer
	to call to playback_location.
	(gcc::jit::recording::field::replay_into): Likewise.
	(gcc::jit::recording::struct_::replay_into): Likewise.
	(gcc::jit::recording::param::replay_into): Likewise.
	(gcc::jit::recording::function::replay_into): Likewise.
	(gcc::jit::recording::global::replay_into): Likewise.
	(gcc::jit::recording::unary_op::replay_into): Likewise.
	(gcc::jit::recording::binary_op::replay_into): Likewise.
	(gcc::jit::recording::comparison::replay_into): Likewise.
	(gcc::jit::recording::call::replay_into): Likewise.
	(gcc::jit::recording::array_access::replay_into): Likewise.
	(gcc::jit::recording::access_field_of_lvalue::replay_into): Likewise.
	(gcc::jit::recording::access_field_rvalue::replay_into): Likewise.
	(gcc::jit::recording::dereference_field_rvalue::replay_into): Likewise.
	(gcc::jit::recording::dereference_rvalue::replay_into): Likewise.
	(gcc::jit::recording::get_address_of_lvalue::replay_into): Likewise.
	(gcc::jit::recording::local::replay_into): Likewise.
	(gcc::jit::recording::eval::replay_into): Likewise.
	(gcc::jit::recording::assignment::replay_into): Likewise.
	(gcc::jit::recording::assignment_op::replay_into): Likewise.
	(gcc::jit::recording::comment::replay_into): Likewise.
	(gcc::jit::recording::conditional::replay_into): Likewise.
	(gcc::jit::recording::place_label::replay_into): Likewise.
	(gcc::jit::recording::jump::replay_into): Likewise.
	(gcc::jit::recording::return_::replay_into): Likewise.
	(gcc::jit::recording::loop::replay_into): Likewise.
	(gcc::jit::recording::loop_end::replay_into): Likewise.

	(gcc::jit::recording::function::new_local): Add to the function's
	vector of locals.
	(gcc::jit::recording::function::add_eval): Add to the function's
	m_activity field.
	(gcc::jit::recording::function::add_assignment): Likewise.
	(gcc::jit::recording::function::add_assignment_op): Likewise.
	(gcc::jit::recording::function::add_comment): Likewise.
	(gcc::jit::recording::function::add_conditional): Likewise.
	(gcc::jit::recording::function::place_forward_label): Likewise.
	(gcc::jit::recording::function::add_jump): Likewise.
	(gcc::jit::recording::function::add_return): Likewise.
	(gcc::jit::recording::function::new_loop): Likewise.

	(gcc::jit::recording::conditional::make_debug_string): Add missing
	semicolon.

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

	* libgccjit.c (gcc_jit_context_new_rvalue_from_ptr): Verify that
	pointer_type is indeed a pointer type.
	(gcc_jit_context_null): Likewise.
	(gcc_jit_context_new_array_access): Verify that ptr is indeed a
	pointer.

	* TODO.rst: Update

2014-02-18  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_struct): New.
	(gcc_jit_context_new_struct_type): Change return type from gcc_jit_type
	to gcc_jit_struct.
	(gcc_jit_context_new_opaque_struct): New.
	(gcc_jit_struct_as_type): New.
	(gcc_jit_struct_set_fields): New.
	(gcc_jit_context_null): New.

	* libgccjit.map (gcc_jit_context_new_opaque_struct): New.
	(gcc_jit_context_null): New.
	(gcc_jit_struct_as_type): New.
	(gcc_jit_struct_set_fields): New.

	* libgccjit++.h (gccjit::context::new_struct_type): Return a
	struct_ rather than a type.
	(gccjit::context::new_opaque_struct_type): New.
	(gccjit::struct_): New subclass of type.

	* libgccjit.c (gcc_jit_struct): New.
	(RETURN_VAL_IF_FAIL_PRINTF1): New.
	(RETURN_VAL_IF_FAIL_PRINTF2): New.
	(RETURN_NULL_IF_FAIL_PRINTF1): New.
	(RETURN_IF_FAIL_PRINTF1): New.
	(RETURN_IF_FAIL_PRINTF2): New.
	(gcc_jit_context_new_struct_type): Return a gcc_jit_struct rather
	than a gcc_jit_type; implement by creating the struct, then
	setting the fields in it.
	(gcc_jit_context_new_opaque_struct): New.
	(gcc_jit_struct_as_type): New.
	(gcc_jit_struct_set_fields): New.
	(gcc_jit_context_null): New.
	(gcc_jit_lvalue_access_field): Use the struct's context when
	reporting on a NULL field; verify that the field has been placed
	in a struct.
	(gcc_jit_rvalue_access_field): Likewise.
	(is_bool): New.
	(gcc_jit_function_add_conditional): Use the function's context
	when reporting errors; verify that boolval's type is indeed
	boolean.
	(gcc_jit_function_new_loop): Likewise.

	* internal-api.h (gcc::jit::recording::context::new_struct_type):
	Don't accept fields, and return a struct_ rather than a type_, so
	that fields can be set later.
	(gcc::jit::recording::struct_::struct_): Store a (fields *) rather
	than a vec of fields.
	(gcc::jit::recording::struct_::as_type): New.
	(gcc::jit::recording::struct_::get_fields): New.
	(gcc::jit::recording::struct_::set_fields): New.
	(gcc::jit::recording::struct_::playback_struct): New.
	(gcc::jit::recording::fields): New class.
	(gcc::jit::playback::context::new_struct_type): Don't accept
	fields, and return a struct_ rather than a type_, so that fields
	can be set later.
	(gcc::jit::playback::struct_): New subclass of type.

	* internal-api.c (gcc::jit::recording::context::get_type): With
	nested contexts, create basic types within the ultimate parent
	context, allowing for a fast check for the boolean type using
	pointer equality.
	(gcc::jit::recording::context::new_struct_type): Don't accept
	fields, and return a struct_ rather than a type_, so that fields
	can be set later.
	(gcc::jit::recording::context::get_opaque_FILE_type): Update for
	struct-creation changes.
	(gcc::jit::recording::struct_::struct_): Store a (fields *) rather
	than a vec of fields.
	(gcc::jit::recording::struct_::set_fields): New.
	(gcc::jit::recording::struct_::replay_into): Don't playback the
	fields, as this is now done by a fields instance.
	(gcc::jit::recording::fields::fields): New.
	(gcc::jit::recording::fields::replay_into): New.
	(gcc::jit::recording::fields::make_debug_string): New.
	(gcc::jit:: playback::context::new_struct_type): Don't accept
	fields, and return a struct_ rather than a type_, so that fields
	can be set later.
	(gcc::jit::playback::struct_::set_fields): New.

	* TODO.rst: Update.

2014-02-18  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.c (gcc_jit_function_new_local): Use the context of the
	function when reporting errors.
	(gcc_jit_function_place_forward_label): Likewise.
	(gcc_jit_function_add_eval): Likewise.
	(gcc_jit_function_add_assignment_op): Likewise.
	(gcc_jit_function_add_comment): Likewise.
	(gcc_jit_function_add_jump): Likewise.

2014-02-14  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit++.h (gccjit::type::zero): New method.
	(gccjit::type::one): New method.
	(gccjit::function::add_call): New family of overloaded methods.

2014-02-13  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_context_get_builtin_function): New.
	* libgccjit.map (gcc_jit_context_get_builtin_function): New.
	* libgccjit++.h (gccjit::context::get_builtin_function): New method.

	* Make-lang.in (jit_OBJS): Add jit/jit-builtins.o
	* jit-builtins.c: New source file, for managing builtin functions
	and their types.
	* jit-builtins.h: Likewise.

	* libgccjit.c (gcc_jit_context_new_function): Pass BUILT_IN_NONE for
	the new argument of new_function
	(gcc_jit_context_get_builtin_function): New.

	* internal-api.h: Add idempotency guards.
	(gcc::jit::recording::context::new_function): Add parameter
	for builtin functions.
	(gcc::jit::recording::context::get_builtin_function): New method.
	(gcc::jit::recording::context::m_builtins_manager): New field.
	(gcc::jit::recording::type::as_a_function_type): New virtual function.
	(gcc::jit::recording::function_type): New subclass of type.
	(gcc::jit::recording::function::function): Add parameter for
	builtin functions.
	(gcc::jit::recording::function::m_builtin_id): New field.
	(gcc::jit::recording::function::new_function_type): New method.
	(gcc::jit::playback::function::function):  Add parameter for
	builtin functions.
	* internal-api.c (gcc::jit::recording::context::context):
	NULL-initialize new field m_builtins_manager.
	(gcc::jit::recording::context::~context): Clean up the builtins
	manager, if one has been created.
	(gcc::jit::recording::context::new_function): Add parameter
	(gcc::jit::recording::context::get_builtin_function): New method.
	(gcc::jit::recording::function_type::function_type): Implement
	constructor for new subclass.
	(gcc::jit::recording::function_type::dereference): Implement
	method for new subclass.
	(gcc::jit::recording::function_type::replay_into): Likewise.
	(gcc::jit::recording::function_type::make_debug_string): Likewise.
	(gcc::jit::recording::function::function): Add parameter for
	builtin functions.
	(gcc::jit::recording::function::replay_into): Likewise for
	creation of playback object.
	(gcc::jit::recording::function::new_function_type): New method.
	(gcc::jit::playback::function::new_function):  Add parameter for
	builtin functions, using it to set up the fndecl accordingly.

2014-02-11  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.c (IS_ASCII_ALPHA): New macro.
	(IS_ASCII_DIGIT): New macro.
	(IS_ASCII_ALNUM): New macro.
	(gcc_jit_context_new_function): Require that function names be valid
	C identifiers for now, to avoid later problems in the assembler.

2014-02-11  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (enum gcc_jit_types): Add GCC_JIT_TYPE_BOOL.

	* internal-api.h (gcc::jit::recording::comparison::comparison): Use
	GCC_JIT_TYPE_BOOL as the types of comparisons, rather than
	GCC_JIT_TYPE_INT.

	* internal-api.c (gcc::jit::recording::memento_of_get_type::
	dereference): Handle GCC_JIT_TYPE_BOOL (with an error).
	(get_type_strings): Add GCC_JIT_TYPE_BOOL.
	(get_tree_node_for_type): Handle GCC_JIT_TYPE_BOOL.

2014-02-11  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::recording::context::add_error_va): If
	GCC_JIT_STR_OPTION_PROGNAME is NULL, use "libgccjit.so", as per
	the comment in libgccjit.h
	(gcc::jit::recording::label::replay_into): When reporting on an
	unplaced label, include the name of the containing function in
	the error message.
	* libgccjit.c: Remove comment about "Functions for use within the
	code factory", as this distinction went away in commit
	96b218c9a1d5f39fb649e02c0e77586b180e8516.
	(RETURN_VAL_IF_FAIL_PRINTF4): New.
	(RETURN_NULL_IF_FAIL_PRINTF4): New.
	(jit_error): Invoke vfprintf with the correct format string in
	the NULL context case.
	(gcc_jit_context_new_call): Check for NULL entries within the
	array of arguments.

2014-02-10  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_context_get_int_type): New.
	* libgccjit.map (gcc_jit_context_get_int_type): New.
	* libgccjit.c (gcc_jit_context_get_int_type): New.

	* internal-api.h (gcc::jit::recording::context::get_int_type): New.
	(gcc::jit::recording::context::get_int_type<T>): New template.
	* internal-api.c (gcc::jit::recording::context::get_int_type): New.

	* libgccjit++.h: Include <limits> so we can use std::numeric_limits.
	(gccjit::context::get_int_type): New.
	(gccjit::context::get_int_type<T>): New.

2014-02-10  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_function_get_param): New.
	* libgccjit.map (gcc_jit_function_get_param): New.
	* libgccjit.c (gcc_jit_function_get_param): New.
	* libgccjit++.h (gccjit::function::get_param): New.

2014-02-10  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit++.h (gccjit::object::get_inner_object): Make const.
	(gccjit::location::get_inner_location): Likewise.
	(gccjit::field::get_inner_field): Likewise.
	(gccjit::type::get_inner_type): Likewise.
	(gccjit::function::get_inner_function): Likewise.
	(gccjit::label::get_inner_label): Likewise.
	(gccjit::rvalue::get_inner_rvalue): Likewise.
	(gccjit::lvalue::get_inner_lvalue): Likewise.
	(gccjit::param::get_inner_param): Likewise.

2014-02-10  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit++.h (gccjit::object::get_context): New method.
	(gccjit::function): Add overloaded operator () for various
	numbers of arguments as a very terse way of creating function calls.
	(gccjit::rvalue::get_type): New method.

	(operator-): New overloaded unary op for rvalues.
	(operator~): Likewise.
	(operator!): Likewise.

	(operator+): New overloaded binary op for rvalues.
	(operator-): Likewise.
	(operator*): Likewise.
	(operator/): Likewise.
	(operator%): Likewise.
	(operator&): Likewise.
	(operator^): Likewise.
	(operator|): Likewise.
	(operator&&): Likewise.
	(operator||): Likewise.

	(operator==): New overloaded comparison for rvalues.
	(operator!=): Likewise.
	(operator<): Likewise.
	(operator<=): Likewise.
	(operator>): Likewise.
	(operator>=): Likewise.

	(operator*): New overloaded operator for dereferencing an
	rvalue representing a pointer.

	* libgccjit.c (gcc_jit_rvalue_get_type): New.
	* libgccjit.h (gcc_jit_rvalue_get_type): New.
	* libgccjit.map (gcc_jit_rvalue_get_type): New.

2014-02-10  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit++.h (gccjit::context::new_minus): New method,
	providing a way to do a specific unary op with less typing.
	(gccjit::context::new_bitwise_negate): Likewise.
	(gccjit::context::new_logical_negate): Likewise.

	(gccjit::context::new_plus): Likewise, for binary op.
	(gccjit::context::new_minus): Likewise.
	(gccjit::context::new_mult): Likewise.
	(gccjit::context::new_divide): Likewise.
	(gccjit::context::new_modulo): Likewise.
	(gccjit::context::new_bitwise_and): Likewise.
	(gccjit::context::new_bitwise_xor): Likewise.
	(gccjit::context::new_bitwise_or): Likewise.
	(gccjit::context::new_logical_and): Likewise.
	(gccjit::context::new_logical_or): Likewise.

	(gccjit::context::new_eq): Likewise, for comparison.
	(gccjit::context::new_ne): Likewise.
	(gccjit::context::new_lt): Likewise.
	(gccjit::context::new_le): Likewise.
	(gccjit::context::gccjit::context::new_gt): Likewise.
	(gccjit::context::gccjit::context::new_ge): Likewise.

	(gccjit::context::new_call): Add a series of overloaded methods
	for specific numbers of args (from 0 - 6), to avoid the need for
	client code to manually build a std::vector (or requiring C++11).

2014-02-10  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit++.h (gccjit::context::new_struct_type): Pass std::vector
	"fields" argument by reference rather than by value.
	(gccjit::context::new_function): Likewise, for "params" arg.
	(gccjit::context::new_call): Likewise, for "args" arg.

2014-02-10  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit++.h (gccjit::context::new_location): Update filename
	arg from a const char * to a const std::string &.
	(gccjit::context::new_field): Likewise for "name" arg.
	(gccjit::context::new_struct_type): Likewise.
	(gccjit::context::new_param): Likewise.
	(gccjit::context::new_function): Likewise.
	(gccjit::function::new_local): Likewise.
	(gccjit::context::new_rvalue): Likewise for "value" arg.
	(gccjit::function::add_comment): Likewise for "text" arg.
	(gccjit::function::new_forward_label): Likewise for "name" arg; add
	variant taking no args for anonymous labels.
	(gccjit::function::add_label): Likewise.

2014-02-10  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit++.h (gccjit::object, gccjit::location): Move
	these declarations to before that of gccjit::context so that
	the various methods of context taking a location can have a
	default location value.
	(gccjit::context::new_array_type): Consolidate two methods,
	one accepting a gccjit::location, the other without, by
	providing a default argument (which thus has to be moved to the
	end of the argument list).
	(gccjit::context::new_field): Likewise.
	(gccjit::context::new_struct_type): Likewise.
	(gccjit::context::new_param): Likewise.
	(gccjit::context::new_function): Likewise.
	(gccjit::context::new_unary_op): Likewise.
	(gccjit::context::new_binary_op): Likewise.
	(gccjit::context::new_comparison): Likewise.
	(gccjit::context::new_call): Likewise.
	(gccjit::context::new_array_access): Likewise.
	(gccjit::function::new_local): Likewise.
	(gccjit::function::add_eval): Likewise.
	(gccjit::function::add_assignment): Likewise.
	(gccjit::function::add_assignment_op): Likewise.
	(gccjit::function::add_comment): Likewise.
	(gccjit::function::add_conditional): Likewise.
	(gccjit::function::add_label): Likewise.
	(gccjit::function::place_forward_label): Likewise.
	(gccjit::function::add_jump): Likewise.
	(gccjit::function::add_return): Likewise.
	(gccjit::rvalue::access_field): Likewise.
	(gccjit::rvalue::dereference_field): Likewise.
	(gccjit::rvalue::dereference): Likewise.
	(gccjit::lvalue::access_field): Likewise.
	(gccjit::lvalue::get_address): Likewise.

2014-02-10  David Malcolm  <dmalcolm@redhat.com>

	* TODO.rst: Update.

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

	* libgccjit++.h: Include <ostream> rather than <iostream>, since
	the former gets us std::ostream, and the latter may introduce
	startup-time overhead for constructing std::cout et al.
	(gccjit::context::new_child_context): New.
	(gccjit::context::release): New.
	(gccjit::context::compile): New.
	(gccjit::context::set_int_option): New.
	(gccjit::context::set_bool_option): New.

2014-02-03  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (struct gcc_jit_object): New.
	(gcc_jit_object_get_context): New.
	(gcc_jit_object_get_debug_string): New.
	(gcc_jit_location_as_object): New.
	(gcc_jit_type_as_object): New.
	(gcc_jit_field_as_object): New.
	(gcc_jit_param_as_object): New.
	(gcc_jit_function_as_object): New.
	(gcc_jit_label_as_object): New.
	(gcc_jit_lvalue_as_object): New.
	(gcc_jit_rvalue_as_object): New.
	(gcc_jit_loop_as_object): New.

	* libgccjit.map (gcc_jit_field_as_object): New.
	(gcc_jit_function_as_object): New.
	(gcc_jit_label_as_object): New.
	(gcc_jit_location_as_object): New.
	(gcc_jit_loop_as_object): New.
	(gcc_jit_lvalue_as_object): New.
	(gcc_jit_object_get_context): New.
	(gcc_jit_object_get_debug_string): New.
	(gcc_jit_param_as_object): New.
	(gcc_jit_rvalue_as_object): New.
	(gcc_jit_type_as_object): New.

	* libgccjit.c (struct gcc_jit_object): New.
	(gcc_jit_location_as_object): New.
	(gcc_jit_type_as_object): New.
	(gcc_jit_field_as_object): New.
	(gcc_jit_param_as_object): New.
	(gcc_jit_function_as_object): New.
	(gcc_jit_label_as_object): New.
	(gcc_jit_lvalue_as_object): New.
	(gcc_jit_rvalue_as_object): New.
	(gcc_jit_object_get_context): New.
	(gcc_jit_object_get_debug_string): New.
	(gcc_jit_loop_as_object): New.
	* internal-api.h (gcc::jit::recording::memento::get_context): New.
	(gcc::jit::recording::memento::as_object): New.

	* libgccjit++.h: Require iostream, for std::ostream.
	(class object): New base class.
	(operator << (std::ostream& stream, const object &obj)): New.
	(location): Inherit from the new "object" base class.
	(location::m_inner_loc): Remove, in favor of...
	(location::get_inner_location): ...new method.
	(field): Inherit from the new "object" base class.
	(field::m_inner_field): Remove, in favor of...
	(field::get_inner_field): ...new method.
	(type): Inherit from the new "object" base class.
	(type::m_inner_type): Remove, in favor of...
	(type::get_inner_type): ...new method.
	(function): Inherit from the new "object" base class.
	(function::m_inner_func): Remove, in favor of...
	(function::get_inner_function): ...new method.
	(label): Inherit from the new "object" base class.
	(label::m_inner_label): Remove, in favor of...
	(label::get_inner_label): ...new method.
	(rvalue) Inherit from the new "object" base class.
	(rvalue::m_inner_rvalue): Remove, in favor of...
	(rvalue::get_inner_rvalue): ...new method.

	(context::new_field): Update for move of inner pointer to the
	"object" base class.
	(context::new_struct_type): Likewise.
	(context::new_param): Likewise.
	(context::new_function): Likewise.
	(context::new_rvalue): Likewise.
	(context::zero): Likewise.
	(context::one): Likewise.
	(context::new_rvalue): Likewise.
	(context::new_rvalue): Likewise.
	(context::new_unary_op): Likewise.
	(context::new_binary_op): Likewise.
	(context::new_comparison): Likewise.
	(context::new_call): Likewise.

	(object::get_debug_string): New.
	(object::object): New.
	(object::get_inner_object): New.
	(operator << (std::ostream&, const object &)): New.

	(location::location): Update for move of inner pointer to the
	"object" base class.
	(location::get_inner_location): New.

	(field::field): Update for move of inner pointer to the
	"object" base class.
	(field::get_inner_field): New.

	(type::type): Update for move of inner pointer to the
	"object" base class.
	(type::get_pointer): Likewise.
	(type::get_inner_type): New.

	(function::function): Update for move of inner pointer to the
	"object" base class.
	(function::new_forward_label): Likewise.
	(function::new_local): Likewise.
	(function::add_eval): Likewise.
	(function::add_assignment): Likewise.
	(function::add_assignment_op): Likewise.
	(function::add_comment): Likewise.
	(function::add_conditional): Likewise.
	(function::add_label): Likewise.
	(function::place_forward_label): Likewise.
	(function::add_jump): Likewise.
	(function::add_return): Likewise.
	(function::get_inner_function): New.

	(label::label): Update for move of inner pointer to the "object"
	base class.
	(label::get_inner_label): New

	(rvalue::rvalue): Update for move of inner pointer to the "object"
	base class.
	(rvalue::get_inner_rvalue): New.
	(rvalue::access_field): Likewise.
	(rvalue::dereference_field): Likewise.
	(rvalue::dereference): Likewise.

	(lvalue::get_inner_lvalue): Update for move of inner pointer to
	the "object" base class.
	(lvalue::access_field): Likewise.
	(lvalue::get_address): Likewise.

2014-01-31  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit++.h: New file - a C++ wrapper for the libgccjit.h API.

	* TODO.rst ("Test Suite"): New section, adding note about C++
	tests.

2014-01-31  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_context_new_rvalue_from_int): Give the type
	parameter a more descriptive name.
	(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.

	* libgccjit.c (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.

	* internal-api.h (gcc::jit::recording::context::
	new_rvalue_from_int): Likewise.
	(gcc::jit::recording::context::
	new_rvalue_from_double): Likewise.
	(gcc::jit::recording::memento_of_new_rvalue_from_int::
	memento_of_new_rvalue_from_int): Likewise.
	(gcc::jit::recording::memento_of_new_rvalue_from_double::
	memento_of_new_rvalue_from_double): Likewise.
	(gcc::jit::recording::memento_of_new_rvalue_from_ptr::
	memento_of_new_rvalue_from_ptr): Likewise.

2014-01-30  David Malcolm  <dmalcolm@redhat.com>

	* TODO.rst: Label-placement is now checked.

	* internal-api.c (gcc::jit::recording::context::replay_into): Give
	up if any errors occur during the playback.
	(gcc::jit::recording::label::replay_into): Issue an error if the
	label has not yet been placed (at playback time).
	(gcc::jit::recording::place_label::place_label): Move this here
	from internal-api.h.  Issue an error if the label has already
	been placed (at recording time).

	* internal-api.h (gcc::jit::recording::label): Add an
	m_has_been_placed field, and make class place_label a friend so
	it can set it.
	(gcc::jit::recording::label::has_been_placed): New accessor.
	(gcc::jit::recording::place_label::place_label): Move to
	internal-api.c.

	(gcc::jit::playback::context::errors_occurred): Make public, for
	use by gcc::jit::recording::context::replay_into.

2014-01-30  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::recording::type::get_pointer):
	Ensure that repeated calls yield the same type.
	(gcc::jit::recording::memento_of_get_pointer::
	accepts_writes_from): New.
	(gcc::jit::recording::context::new_call): Move
	the existing argument checking to...

	* libgccjit.c (gcc_jit_context_new_call): ...here, and add
	checking of the types of the arguments against the function.
	(RETURN_VAL_IF_FAIL_PRINTF6): New.
	(RETURN_NULL_IF_FAIL_PRINTF6): New.

	* internal-api.h (gcc::jit::recording::type): New field
	m_pointer_to_this_type, for use by get_pointer method.
	(gcc::jit::recording::memento_of_get_pointer::
	accepts_writes_from): New.
	(gcc::jit::recording::function::get_param): New.

	* TODO.rst (argument checking of gcc_jit_context_new_call): Done.

2014-01-30  David Malcolm  <dmalcolm@redhat.com>

	* TODO.rst: begin a list of error-checking we could do that this
	commit *doesn't* cover.

	* libgccjit.h (gcc_jit_field): Add note that fields can't be
	shared between structs.
	(GCC_JIT_BINARY_OP_MODULO): Fix typo in comment.

	* libgccjit.c: (RETURN_VAL_IF_FAIL_PRINTF2): New.
	(RETURN_VAL_IF_FAIL_PRINTF3): New.
	(RETURN_NULL_IF_FAIL_PRINTF2): New.
	(RETURN_NULL_IF_FAIL_PRINTF3): New.
	(RETURN_IF_FAIL_PRINTF4): New.

	(jit_error): Take a gcc::jit::recording::context rather than
	a gcc_jit_context so that we pass in contexts from the inner
	layer.

	(compatible_types): New, for use in type-checking.

	(gcc_jit_context_new_struct_type): Check each field to ensure that
	it isn't already in use by another struct.

	(gcc_jit_rvalue_dereference_field): Check that ptr is of a pointer
	type and that the field is within the correct struct, using new
	get_debug_string hooks to generate error messages.

	(gcc_jit_rvalue_dereference): Check that rvalue is of a pointer
	type.

	(gcc_jit_function_add_assignment): Use the function's context when
	reporting on NULL lvalue or rvalue.  Verify that the lvalue and
	rvalue have compatible types.

	(gcc_jit_function_add_return): Use the function's context when
	reporting on NULL rvalue.  Verify that the rvalue is of an
	appropriate type given the function's return type.

	* internal-api.h (NUM_GCC_JIT_TYPES): New.
	(gcc::jit::recording::context::record): Move from here to
	internal-api.c.
	(gcc::jit::recording::context::get_opaque_FILE_type): New.
	(gcc::jit::recording::context::m_basic_types): New field.
	(gcc::jit::recording::context::m_FILE_type): New field.

	(gcc::jit::recording::memento::get_debug_string): New method.
	(gcc::jit::recording::memento::memento): Initialize new field
	m_debug_string, and verify context is non-NULL.
	(gcc::jit::recording::memento::make_debug_string): New
	pure-virtual function lazily used by get_debug_string.
	(gcc::jit::recording::memento::m_debug_string): New field, for
	get_debug_string to use as a cache.

	(gcc::jit::recording::string): Rename field m_copy to m_buffer.
	(gcc::jit::recording::from_printf): New factory function.
	(gcc::jit::recording::make_debug_string): New.

	(gcc::jit::recording::location::make_debug_string): New.

	(gcc::jit::recording::type::dereference): New pure-virtual
	function.
	(gcc::jit::recording::type::accepts_writes_from): New virtual
	function.
	(gcc::jit::recording::type::unqualified): New virtual function.

	(gcc::jit::recording::memento_of_get_type::dereference): New.
	(gcc::jit::recording::memento_of_get_type::
	accepts_writes_from): New.
	(gcc::jit::recording::memento_of_get_type::make_debug_string):
	New.

	(gcc::jit::recording::memento_of_get_pointer::make_debug_string):
	New.
	(gcc::jit::recording::memento_of_get_pointer::dereference): New.
	New.

	(gcc::jit::recording::memento_of_get_const::make_debug_string):
	New.
	(gcc::jit::recording::memento_of_get_const::dereference): New.
	New.
	(gcc::jit::recording::memento_of_get_const::accepts_writes_from):
	New.
	(gcc::jit::recording::memento_of_get_const::unqualified): New.

	(gcc::jit::recording::field): New field m_container, for the
	containing struct (or union, if we implement that).
	(gcc::jit::recording::field::get_type): New.
	(gcc::jit::recording::field::get_container): New.
	(gcc::jit::recording::field:set_container): New.
	(gcc::jit::recording::field::make_debug_string): New.

	(gcc::jit::recording::struct_::struct_): Move ctor implementation
	from here into internal-api.c.
	(gcc::jit::recording::struct_::dereference): New.
	(gcc::jit::recording::struct_::make_debug_string): New.

	(gcc::jit::recording::rvalue::m_type): New field.
	(gcc::jit::recording::rvalue::rvalue): Require a non-NULL type for
	new rvalue instances.
	(gcc::jit::recording::rvalue::get_type): New accessor.

	(gcc::jit::recording::lvalue): Eliminate field m_type in favor of
	that within the rvalue base class.

	(gcc::jit::recording::param::make_debug_string): New.

	(gcc::jit::recording::function::get_return_type): New accessor.
	(gcc::jit::recording::function::make_debug_string): New.

	(gcc::jit::recording::label::make_debug_string): New.

	(gcc::jit::recording::global): Eliminate field m_type in favor of
	that within the rvalue ultimate base class (via lvalue).
	(gcc::jit::recording::make_debug_string): New.

	(gcc::jit::recording::memento_of_new_rvalue_from_int): Eliminate
	field m_type in favor of that within the rvalue base class.
	(gcc::jit::recording::memento_of_new_rvalue_from_int::
	make_debug_string): New.

	(gcc::jit::recording::memento_of_new_rvalue_from_double): Eliminate
	field m_type in favor of that within the rvalue base class.
	(gcc::jit::recording::memento_of_new_rvalue_from_double::
	make_debug_string): New.

	(gcc::jit::recording::memento_of_new_rvalue_from_ptr): Eliminate
	field m_type in favor of that within the rvalue base class.
	(gcc::jit::recording::memento_of_new_rvalue_from_ptr::
	make_debug_string): New.

	(gcc::jit::recording::memento_of_new_string_literal::
	memento_of_new_string_literal): Initialize type.
	(gcc::jit::recording::memento_of_new_string_literal::
	make_debug_string): New.

	(gcc::jit::recording::unary_op): Eliminate field m_result_type in
	favor of m_type within the rvalue base class.
	(gcc::jit::recording::unary_op::make_debug_string): New.

	(gcc::jit::recording::binary_op): Eliminate field m_result_type in
	favor of m_type within the rvalue base class.
	(gcc::jit::recording::binary_op::make_debug_string): New.

	(gcc::jit::recording::comparison): Eliminate field m_result_type
	in favor of m_type within the rvalue base class.
	(gcc::jit::recording::comparison::make_debug_string): New.

	(gcc::jit::recording::make_debug_string): New.

	(gcc::jit::recording::array_lookup::array_lookup): Initialize type
	by dereferencing the type of the pointer.
	(gcc::jit::recording::array_lookup::make_debug_string): New.

	(gcc::jit::recording::access_field_of_lvalue::
	access_field_of_lvalue): Initialize type from that of the field.
	(gcc::jit::recording::access_field_of_lvalue::
	make_debug_string): New.

	(gcc::jit::recording::access_field_rvalue::
	access_field_of_rvalue): Initialize type from that of the field.
	(gcc::jit::recording::access_field_rvalue::make_debug_string):
	New.

	(gcc::jit::recording::dereference_field_rvalue::
	dereference_field_rvalue): Initialize type from that of the field.
	(gcc::jit::recording::dereference_field_rvalue::
	make_debug_string): New.

	(gcc::jit::recording::dereference_rvalue::dereference_rvalue):
	Initialize type by dereferencing the type of the pointer.
	(gcc::jit::recording::dereference_rvalue::make_debug_string): New.

	(gcc::jit::recording::get_address_of_lvalue::
	get_address_of_lvalue):  Initialize type by dereferencing the type
	of the pointer.
	(gcc::jit::recording::get_address_of_lvalue::make_debug_string):
	New.

	(gcc::jit::recording::local): Eliminate field m_type in favor of
	that within the rvalue ultimate base class (via lvalue).
	(gcc::jit::recording::make_debug_string): New.

	(gcc::jit::recording::eval::make_debug_string): New.
	(gcc::jit::recording::assignment::make_debug_string): New.
	(gcc::jit::recording::assignment_op::make_debug_string): New.
	(gcc::jit::recording::comment::make_debug_string): New.
	(gcc::jit::recording::conditional::make_debug_string): New.
	(gcc::jit::recording::place_label::make_debug_string): New.
	(gcc::jit::recording::jump::make_debug_string): New.
	(gcc::jit::recording::return_::make_debug_string): New.
	(gcc::jit::recording::loop::make_debug_string): New.
	(gcc::jit::recording::loop_end::make_debug_string): New.

	* internal-api.c (gcc::jit::recording::context::context):
	Initialize m_FILE_type and m_basic_types.
	(gcc::jit::recording::context::record): Move here from
	internal-api.h.
	(gcc::jit::recording::context::replay_into): Add a disabled way to
	log everything during a replay, exercising the stringification
	machinery.
	(gcc::jit::recording::context::get_type): Cache and reuse the
	types, so that repeated calls on the context give the same object.
	(gcc::jit::recording::context::get_opaque_FILE_type): New, for
	the result of dereferencing (FILE*), mostly so that fuzz-testing
	that tries this gets something sane back.
	(gcc::jit::recording::memento::get_debug_string): New method,
	giving a way to easily get a descriptive (const char *) for
	an API entity.  Internally, it lazily calls the make_debug_string
	virtual function, storing the result in m_debug_string.

	(gcc::jit::recording::string::string): Rename field m_copy to m_buffer.
	(gcc::jit::recording::string::~string): Likewise.
	(gcc::jit::recording::string::from_printf): New factory function,
	to make it easy to implement the make_debug_string hooks.

	(gcc::jit::recording::string::make_debug_string): New.

	(gcc::jit::recording::location::make_debug_string): New.

	(gcc::jit::recording::memento_of_get_type::dereference): New.

	(get_type_strings): New table of strings, for use by...
	(gcc::jit::recording::memento_of_get_type::make_debug_string): New.

	(gcc::jit::recording::memento_of_get_pointer::make_debug_string): New.

	(gcc::jit::recording::memento_of_get_const::make_debug_string): New.

	(gcc::jit::recording::field::make_debug_string): New.

	(gcc::jit::recording::struct_::struct_): Move here from
	internal-api.h.  Mark all fields as belonging to the new struct.

	(gcc::jit::recording::struct_::dereference): New.
	(gcc::jit::recording::struct_::make_debug_string): New.

	(gcc::jit::recording::function::make_debug_string): New.

	(gcc::jit::recording::label::make_debug_string): New.

	(gcc::jit::recording::memento_of_new_rvalue_from_int::
	make_debug_string): New.
	(gcc::jit::recording::memento_of_new_rvalue_from_double::
	make_debug_string): New.
	(gcc::jit::recording::memento_of_new_rvalue_from_ptr::
	make_debug_string): New.
	(gcc::jit::recording::memento_of_new_string_literal::
	make_debug_string): New.

	(gcc::jit::recording::unary_op::replay_into): Use get_type ()
	rather than the now-defunct m_result_type.
	(gcc::jit::recording::binary_op::replay_into): Likewise.

	(unary_op_strings): New table of strings for use by...
	(gcc::jit::recording::unary_op::make_debug_string): New.

	(binary_op_strings): New table of strings for use by...
	(gcc::jit::recording::binary_op::make_debug_string): New.

	(comparison_strings): New table of strings for use by...
	(gcc::jit::recording::comparison::make_debug_string): New.

	(gcc::jit::recording::call::call): Initialize the type.
	(gcc::jit::recording::call::make_debug_string): New.

	(gcc::jit::recording::array_lookup::make_debug_string): New.
	(gcc::jit::recording::access_field_of_lvalue::
	make_debug_string): New.
	(gcc::jit::recording::access_field_rvalue::
	make_debug_string): New.
	(gcc::jit::recording::dereference_field_rvalue::
	make_debug_string): New.
	(gcc::jit::recording::dereference_rvalue::make_debug_string): New.
	(gcc::jit::recording::get_address_of_lvalue::
	make_debug_string): New.
	(gcc::jit::recording::eval::make_debug_string): New.
	(gcc::jit::recording::assignment::make_debug_string): New.
	(gcc::jit::recording::assignment_op::make_debug_string): New.
	(gcc::jit::recording::comment::make_debug_string): New.
	(gcc::jit::recording::conditional::make_debug_string): New.
	(gcc::jit::recording::place_label::make_debug_string): New.
	(gcc::jit::recording::jump::make_debug_string): New.
	(gcc::jit::recording::return_::make_debug_string): New.
	(gcc::jit::recording::loop::make_debug_string): New.
	(gcc::jit::recording::loop_end::make_debug_string): New.

2014-01-29  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_lvalue_access_field): Require
	a (gcc_jit_field *) rather than a field name.
	(gcc_jit_rvalue_access_field): Likewise.
	(gcc_jit_rvalue_dereference_field): Likewise.

	* libgccjit.c (gcc_jit_lvalue_access_field): Require
	a (gcc_jit_field *) rather than a field name.
	(gcc_jit_rvalue_access_field): Likewise.
	(gcc_jit_rvalue_dereference_field): Likewise.

	* internal-api.c (gcc::jit::recording::rvalue::access_field):
	Require a field rather than a fieldname string.
	(gcc::jit::recording::rvalue::dereference_field): Likewise.
	(gcc::jit::recording::lvalue::access_field): Likewise.

	(gcc::jit::recording::access_field_of_lvalue::replay_into): Update
	given that this now has a field, rather than a fieldname.
	(gcc::jit::recording::access_field_rvalue::replay_into): Likewise.
	(gcc::jit::recording::dereference_field_rvalue::replay_into): Likewise.

	(get_field): Delete, as we no longer need to convert
	from (struct, identifier) pairs to fields, instead directly using
	fields.

	(gcc::jit::playback::context::new_field_access): Require a field
	rather than a fieldname, removing the need to look up the field by
	name within the struct.

	(gcc::jit::playback::lvalue::access_field): Likewise.
	(gcc::jit::playback::rvalue::access_field): Likewise.
	(gcc::jit::playback::rvalue::dereference_field): Likewise.

	* internal-api.h (gcc::jit::recording::rvalue::access_field):
	Require a field rather than a fieldname string.
	(gcc::jit::recording::rvalue::dereference_field): Likewise.
	(gcc::jit::recording::lvalue::access_field): Likewise.

	(gcc::jit::recording::access_field_of_lvalue::access_field_of_lvalue):
	Likewise.
	(gcc::jit::recording::access_field_of_lvalue::m_fieldname): Drop
	string field in favor of...
	(gcc::jit::recording::access_field_of_lvalue::m_field):
	..."field" field, as it were.

	(gcc::jit::recording::access_field_of_rvalue::access_field_of_rvalue):
	Likewise.
	(gcc::jit::recording::access_field_of_rvalue::m_fieldname): Drop
	string field in favor of...
	(gcc::jit::recording::access_field_of_rvalue::m_field):
	..."field" field.

	(gcc::jit::recording::dereference_field_rvalue::
	dereference_field_rvalue): Likewise.
	(gcc::jit::recording::dereference_field_rvalue::m_fieldname): Drop
	string field in favor of...
	(gcc::jit::recording::dereference_field_rvalue::m_field):
	..."field" field.

	(gcc::jit::playback::context::new_field_access): Require a field
	rather than a fieldname string.
	(gcc::jit::playback::context::access_field): Likewise.
	(gcc::jit::playback::context::dereference_field): Likewise.
	(gcc::jit::playback::rvalue::access_field):

2014-01-28  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_context_new_child_context): New function.

	* libgccjit.map (gcc_jit_context_new_child_context): New function.

	* libgccjit.c (gcc_jit_context): Make the constructor explicit,
	with a parent context as a parameter.
	(gcc_jit_context_acquire): Create context with a NULL parent.
	(gcc_jit_context_new_child_context): New function, creating a
	context with the given parent.

	* internal-api.h (gcc::jit::recording::context::context): New
	explicit constructor, taking a parent context as a parameter.
	(gcc::jit::recording::context::m_parent_ctxt): New field.

	* internal-api.c (gcc::jit::recording::context::context): New
	explicit constructor, taking a parent context as a parameter.
	(gcc::jit::recording::context::replay_into): Replay parent contexts
	before replaying the context itself.

2014-01-27  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::playback::context::compile): Removal
	of the code-creation callback (96b218c9a1d5f39fb649e02c0e77586b180e8516)
	accidentally removed the implementation of
	GCC_JIT_BOOL_OPTION_DUMP_GENERATED_CODE; reinstate it.

2014-01-27  David Malcolm  <dmalcolm@redhat.com>

	* internal-api (gcc::jit::recording::context::new_call): Verify
	the argument count of the call against the parameter count of the
	function, issuing an error if there's a mismatch.

	* internal-api.h (gcc::jit::recording::function::get_name): New.
	* (gcc::jit::recording::function::get_params): New.
	* (gcc::jit::recording::function::is_variadic): New.

2014-01-27  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (enum gcc_jit_binary_op): Remove
	GCC_JIT_BINARY_OP_FLOATING_DIVIDE, which I accidentally added
	as part of a880c0d9c642730550f39d328f29a1d9935cb07e.

2014-01-24  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h: Update comments to eliminate the code-creation
	callback.  All "contextual" objects change from merely being
	"alive" during the callback to having a lifetime equal to that
	of the context they are created within, with automatic cleanup
	when the context is released.
	(gcc_jit_code_callback): Delete.
	(gcc_jit_context_set_code_factory): Delete.

	* libgccjit.map (gcc_jit_context_set_code_factory): Delete.

	* dummy-frontend.c (my_walker): Update for rename of the singleton
	reference-owning context.
	(jit_langhook_parse_file): Rather than run a client-provided
	callback, we now replay a recording of the client activity.

	* internal-api.h (gcc::jit): Split the existing API into two
	copies...
	(gcc::jit::recording): ...a class hierarchy used to implement
	the client-facing API, which records the API calls made to it
	and...
	(gcc::jit::playback): ...a class hierarchy used within the
	dummy GCC frontend, which plays back the recorded API calls once
	GCC is initialized.

	* internal-api.c (gcc::jit::recording::playback_location): New
	API, in which client API calls are recorded as a list of "memento"
	objects, to be played back into GCC when the dummy frontend runs.
	(gcc::jit::recording::playback_string): Likewise.
	(gcc::jit::recording::playback_label): Likewise.
	(gcc::jit::recording::context::~context): Likewise.
	(gcc::jit::recording::context::replay_into): Likewise.
	(gcc::jit::recording::context::disassociate_from_playback): Likewise.
	(gcc::jit::recording::context::new_string): Likewise.
	(gcc::jit::recording::context::new_location): Likewise.
	(gcc::jit::recording::context::get_type): Likewise.
	(gcc::jit::recording::context::new_field): Likewise.
	(gcc::jit::recording::context::new_struct_type): Likewise.
	(gcc::jit::recording::context::new_param): Likewise.
	(gcc::jit::recording::context::new_function): Likewise.
	(gcc::jit::recording::context::new_global): Likewise.
	(gcc::jit::recording::context::new_rvalue_from_int): Likewise.
	(gcc::jit::recording::context::new_rvalue_from_double): Likewise.
	(gcc::jit::recording::context::new_rvalue_from_ptr): Likewise.
	(gcc::jit::recording::context::new_string_literal): Likewise.
	(gcc::jit::recording::context::new_unary_op): Likewise.
	(gcc::jit::recording::context::new_binary_op): Likewise.
	(gcc::jit::recording::context::new_comparison): Likewise.
	(gcc::jit::recording::context::new_call): Likewise.
	(gcc::jit::recording::context::new_array_lookup): Likewise.
	(gcc::jit::recording::string::string): Likewise.
	(gcc::jit::recording::string::~string): Likewise.
	(gcc::jit::recording::location::replay_into): Likewise.
	(gcc::jit::recording::type::get_pointer): Likewise.
	(gcc::jit::recording::type::get_const): Likewise.
	(gcc::jit::recording::memento_of_get_type::replay_into): Likewise.
	(gcc::jit::recording::memento_of_get_pointer::replay_into): Likewise.
	(gcc::jit::recording::memento_of_get_const::replay_into): Likewise.
	(gcc::jit::recording::field::replay_into): Likewise.
	(gcc::jit::recording::struct_::replay_into): Likewise.
	(gcc::jit::recording::rvalue::access_field): Likewise.
	(gcc::jit::recording::rvalue::dereference_field): Likewise.
	(gcc::jit::recording::rvalue::dereference): Likewise.
	(gcc::jit::recording::lvalue::access_field): Likewise.
	(gcc::jit::recording::lvalue::get_address): Likewise.
	(gcc::jit::recording::param::replay_into): Likewise.
	(gcc::jit::recording::function::function): Likewise.
	(gcc::jit::recording::function::replay_into): Likewise.
	(gcc::jit::recording::function::new_local): Likewise.
	(gcc::jit::recording::function::new_forward_label): Likewise.
	(gcc::jit::recording::function::add_eval): Likewise.
	(gcc::jit::recording::function::add_assignment): Likewise.
	(gcc::jit::recording::function::add_assignment_op): Likewise.
	(gcc::jit::recording::function::add_comment): Likewise.
	(gcc::jit::recording::function::add_conditional): Likewise.
	(gcc::jit::recording::function::add_label): Likewise.
	(gcc::jit::recording::function::place_forward_label): Likewise.
	(gcc::jit::recording::function::add_jump): Likewise.
	(gcc::jit::recording::function::add_return): Likewise.
	(gcc::jit::recording::function::new_loop): Likewise.
	(gcc::jit::recording::label::replay_into): Likewise.
	(gcc::jit::recording::global::replay_into): Likewise.
	(gcc::jit::recording::memento_of_new_rvalue_from_int::replay_into):
	Likewise.
	(gcc::jit::recording::memento_of_new_rvalue_from_double::replay_into):
	Likewise.
	(gcc::jit::recording::memento_of_new_rvalue_from_ptr::replay_into):
	Likewise.
	(gcc::jit::recording::memento_of_new_string_literal::replay_into):
	Likewise.
	(gcc::jit::recording::unary_op::replay_into): Likewise.
	(gcc::jit::recording::binary_op::replay_into): Likewise.
	(gcc::jit::recording::comparison::replay_into): Likewise.
	(gcc::jit::recording::call::call): Likewise.
	(gcc::jit::recording::call::replay_into): Likewise.
	(gcc::jit::recording::array_lookup::replay_into): Likewise.
	(gcc::jit::recording::access_field_of_lvalue::replay_into): Likewise.
	(gcc::jit::recording::access_field_rvalue::replay_into): Likewise.
	(gcc::jit::recording::dereference_field_rvalue::replay_into): Likewise.
	(gcc::jit::recording::dereference_rvalue::replay_into): Likewise.
	(gcc::jit::recording::get_address_of_lvalue::replay_into): Likewise.
	(gcc::jit::recording::local::replay_into): Likewise.
	(gcc::jit::recording::eval::replay_into): Likewise.
	(gcc::jit::recording::assignment::replay_into): Likewise.
	(gcc::jit::recording::assignment_op::replay_into): Likewise.
	(gcc::jit::recording::comment::replay_into): Likewise.
	(gcc::jit::recording::conditional::replay_into): Likewise.
	(gcc::jit::recording::place_label::replay_into): Likewise.
	(gcc::jit::recording::jump::replay_into): Likewise.
	(gcc::jit::recording::return_::replay_into): Likewise.
	(gcc::jit::recording::loop::replay_into): Likewise.
	(gcc::jit::recording::loop::end): Likewise.
	(gcc::jit::recording::loop_end::replay_into): Likewise.

	(gcc::jit::recording::context::set_str_option): Likewise.
	Option setting and error-handling is now "owned" by the recording
	context; the playback context delegates to the recording context
	for these aspects.
	(gcc::jit::recording::context::set_int_option): Likewise.
	(gcc::jit::recording::context::set_bool_option): Likewise.
	(gcc::jit::recording::context::compile): Likewise.
	(gcc::jit::recording::context::add_error): Likewise.
	(gcc::jit::recording::context::add_error_va): Likewise.
	(gcc::jit::recording::context::get_first_error): Likewise.

	(gcc::jit::context::context): Rename to...
	(gcc::jit::playback::context::context): ...this.
	(gcc::jit::context::~context): Rename to...
	(gcc::jit::playback::context::~context): ...this.
	(gcc::jit::context::gt_ggc_mx): Rename to...
	(gcc::jit::playback::context::gt_ggc_mx): ...this.

	(gcc::jit::context::set_code_factory): Eliminate.

	(gcc::jit::context::get_type): Rename to...
	(gcc::jit::playback::context::get_type): ...this.
	(gcc::jit::context::new_field): Rename to...
	(gcc::jit::playback::context::new_field): ...this.
	(gcc::jit::context::new_struct_type): Rename to...
	(gcc::jit::playback::context::new_struct_type): ...this, and
	update to require a vec<field *>.
	(gcc::jit::context::new_param): Rename to...
	(gcc::jit::playback::context::new_param): ...this.
	(gcc::jit::context::new_function): Rename to...
	(gcc::jit::playback::context::new_function): ...this, and update
	to require a vec<param *>.
	(gcc::jit::context::new_global): Rename to...
	(gcc::jit::playback::context::new_global): ...this.
	(gcc::jit::context::new_rvalue_from_int): Rename to...
	(gcc::jit::playback::context::new_rvalue_from_int): ...this.
	(gcc::jit::context::new_rvalue_from_double): Rename to...
	(gcc::jit::playback::context::new_rvalue_from_double): ...this.
	(gcc::jit::context::new_rvalue_from_ptr): Rename to...
	(gcc::jit::playback::context::new_rvalue_from_ptr): ...this.
	(gcc::jit::context::new_string_literal): Rename to...
	(gcc::jit::playback::context::new_string_literal): ...this.
	(gcc::jit::context::as_truth_value): Rename to...
	(gcc::jit::playback::context::as_truth_value): ...this.
	(gcc::jit::context::new_unary_op): Rename to...
	(gcc::jit::playback::context::new_unary_op): ...this.
	(gcc::jit::context::new_binary_op): Rename to...
	(gcc::jit::playback::context::new_binary_op): ...this.
	(gcc::jit::context::new_comparison): Rename to...
	(gcc::jit::playback::context::new_comparison): ...this.
	(gcc::jit::context::new_call): Rename to...
	(gcc::jit::playback::context::new_call): ...this, and update
	to require a vec<rvalue *>.
	(gcc::jit::context::new_array_lookup): Rename to...
	(gcc::jit::playback::context::new_array_lookup): ...this.
	(gcc::jit::context::new_field_access): Rename to...
	(gcc::jit::playback::context::new_field_access): ...this.
	(gcc::jit::context::new_dereference): Rename to...
	(gcc::jit::playback::context::new_dereference): ...this.

	(gcc::jit::lvalue::access_field): Rename to...
	(gcc::jit::playback::lvalue::access_field): ...this.
	(gcc::jit::lvalue::get_address): Rename to...
	(gcc::jit::playback::lvalue::get_address): ...this.

	(gcc::jit::rvalue::dereference_field): Rename to...
	(gcc::jit::playback::rvalue::dereference_field): ...this.

	(gcc::jit::rvalue::dereference): Rename to...
	(gcc::jit::playback::rvalue::dereference): ...this.

	(gcc::jit::wrapper::operator new): Rename to...
	(gcc::jit::playback::wrapper::operator new): ...this.

	(gcc::jit::function::function): Rename to...
	(gcc::jit::playback::function::function): ...this.
	(gcc::jit::function::gt_ggc_mx): Rename to...
	(gcc::jit::playback::function::gt_ggc_mx): ...this.
	(gcc::jit::function::get_return_type_as_tree): Rename to...
	(gcc::jit::playback::function::get_return_type_as_tree): ...this.
	(gcc::jit::function::new_local): Rename to...
	(gcc::jit::playback::function::new_local): ...this.
	(gcc::jit::function::new_forward_label): Rename to...
	(gcc::jit::playback::function::new_forward_label): ...this.
	(gcc::jit::function::postprocess): Rename to...
	(gcc::jit::playback::function::postprocess): ...this.
	(gcc::jit::function::add_eval): Rename to...
	(gcc::jit::playback::function::add_eval): ...this.
	(gcc::jit::function::add_assignment): Rename to...
	(gcc::jit::playback::function::add_assignment): ...this.
	(gcc::jit::function::add_comment): Rename to...
	(gcc::jit::playback::function::add_comment): ...this.
	(gcc::jit::function::add_conditional): Rename to...
	(gcc::jit::playback::function::add_conditional): ...this.
	(gcc::jit::function::add_label): Rename to...
	(gcc::jit::playback::function::add_label): ...this.
	(gcc::jit::function::place_forward_label): Rename to...
	(gcc::jit::playback::function::place_forward_label): ...this.
	(gcc::jit::function::add_jump): Rename to...
	(gcc::jit::playback::function::add_jump): ...this.
	(gcc::jit::function::add_return): Rename to...
	(gcc::jit::playback::function::add_return): ...this.
	(gcc::jit::function::new_loop): Rename to...
	(gcc::jit::playback::function::new_loop): ...this.

	(gcc::jit::label::label): Rename to...
	(gcc::jit::playback::label::label): ...this.

	(gcc::jit::loop::loop): Rename to...
	(gc::jit::playback::loop::loop): ...this.
	(gcc::jit::loop::end): Rename to...
	(gcc::jit::playback::loop): ...this.

	(gcc::jit::active_jit_ctxt): Eliminate in favor of...
	(gcc::jit::active_playback_ctxt): ...this.

	(gcc::jit::context::compile): Rename to...
	(gcc::jit::playback::context::compile): ...this, and eliminate the
	mutex handling; this is done for us by the caller.

	(gcc::jit::context::invoke_code_factory): Rename to...
	(gcc::jit::playback::context::replay): this.  Rather than call
	a client-provided callback, instead replay the recorded API
	calls.

	(gcc::jit::context::dump_generated_code): Rename to...
	(gcc::jit::playback::context::dump_generated_code): ...this.

	(location_comparator): Update for renamed types.

	(gcc::jit::context::handle_locations): Rename to...
	(gcc::jit::playback::context::handle_locations): ...this.

	(gcc::jit::context::add_error): Rename to...
	(gcc::jit::playback::context::add_error): this, and delegate to
	the recording context's add_error_va.

	(gcc::jit::context::add_error_va): Rename to...
	(gcc::jit::playback::context::add_error_va): this, and delegate
	to the recording context.

	(gcc::jit::context::new_location): Rename to...
	(gcc::jit::playback::context::new_location): ...this.
	(gcc::jit::context::set_tree_location): Rename to...
	(gcc::jit::playback::context::set_tree_location): ...this.
	(gcc::jit::context::get_source_file): Rename to...
	(gcc::jit::playback::context::get_source_file): ...this.
	(gcc::jit::source_file::source_file): Rename to...
	(gcc::jit::playback::source_file::source_file): ...this.
	(gcc::jit::source_file::get_source_line): Rename to...
	(gcc::jit::playback::source_file::get_source_line): ...this.
	(gcc::jit::source_line::source_line): Rename to...
	(gcc::jit::playback::source_line::source_line): ...this.
	(gcc::jit::source_line::get_location): Rename to...
	(gcc::jit::playback::source_line::get_location): ...this.

	(gcc::jit::location::location): Rename to...
	(gcc::jit::playback::location::location): ...this.

	* libgccjit.c: Update classes to derive from the "jit::recording"
	class hierarchy.
	(RETURN_IF_NOT_INITIAL_CTXT): Eliminate, as it relates to
	code-creation callbacks.
	(RETURN_NULL_IF_NOT_INITIAL_CTXT): Likewise.
	(RETURN_NULL_IF_NOT_CALLBACK_CTXT): Likewise.
	(jit_error): There isn't an "active jit context" anymore, except
	during actual compilation, so simplify the logic here.
	(gcc_jit_context_set_code_factory): Delete.

	(gcc_jit_context_new_location): Update preconditions now that we
	don't have code-creation callbacks.
	(gcc_jit_context_get_type): Likewise.
	(gcc_jit_type_get_pointer): Likewise.
	(gcc_jit_type_get_const): Likewise.
	(gcc_jit_context_new_field): Likewise.
	(gcc_jit_context_new_struct_type): Likewise.
	(gcc_jit_context_new_param): Likewise.
	(gcc_jit_param_as_lvalue): Likewise.
	(gcc_jit_param_as_rvalue): Likewise.
	(gcc_jit_context_new_function): Likewise.
	(gcc_jit_context_new_function): Likewise.
	(gcc_jit_function_new_forward_label): Likewise.
	(gcc_jit_context_new_global): Likewise.
	(gcc_jit_lvalue_as_rvalue): 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_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): Likewise.
	(gcc_jit_context_new_array_lookup): 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_compile): Likewise.
	(gcc_jit_function_add_assignment_op): Likewise.  Also,
	reimplement as a separate kind of recording, since we can't know
	the type of the lvalue at recording-time.

	* notes.txt: Update diagram to reflect the new implementation.

2014-01-24  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (enum gcc_jit_binary_op): We will use the result
	type to determine if GCC_JIT_BINARY_OP_DIVIDE should
	truncate towards zero, or be floating-point division.

	* internal-api.c (gcc::jit::context::new_binary_op): Likewise.

2014-01-24  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.h (gcc::jit::context::get_str_option): New access
	method.
	(gcc::jit::context::get_int_option): Likewise.

	* internal-api.c (gcc::jit::context::~context): Use access methods
	for options, rather than direct field access.
	(gcc::jit::context::compile): Likewise.

2014-01-23  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (enum gcc_jit_bool_option): New value:
	GCC_JIT_BOOL_OPTION_DUMP_GENERATED_CODE.

	* internal-api.c (gcc::jit::context::compile): Call
	dump_generated_code if the user has requested it.
	(gcc::jit::context::dump_generated_code): New, copying
	from the .s file to stderr.

	* internal-api.h (gcc::jit::context::dump_generated_code): New.

2014-01-23  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.h (gcc::jit::function): Add field
	"m_inner_bind_expr".
	* internal-api.c (gcc::jit::function::function): Create a BIND_EXPR
	for all non-imported functions, and put the statement list within
	it.
	(gcc::jit::function::gt_ggc_mx): Visit m_inner_bind_expr.
	(gcc::jit::function::new_local): Set the DECL_CONTEXT of the new
	local to be the function's BIND_EXPR, and prepend the new local
	to said BIND_EXPR's BIND_EXPR_VARS chain.
	(gcc::jit::function::postprocess): Set the DECL_SAVED_TREE of the
	FUNCTION_DECL to be the BIND_EXPR, rather than the statement list.
	The latter is now contained within the former.

2014-01-23  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.h (gcc::jit::function::add_stmt): New.

	* internal-api.c (gcc::jit::function::add_eval): Replace use of
	tsi_link_stmt with call to add_stmt.
	(gcc::jit::function::add_assignment): Likewise.
	(gcc::jit::function::add_conditional): Likewise.
	(gcc::jit::function::place_forward_label): Likewise.
	(gcc::jit::function::add_jump): Likewise.
	(gcc::jit::function::add_return): Likewise.

2014-01-21  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::function::add_comment): New.
	* internal-api.h (gcc::jit::function::add_comment): New.
	* libgccjit.c (gcc_jit_function_add_comment): New.
	* libgccjit.h (gcc_jit_function_add_comment): New.
	* libgccjit.map: Add gcc_jit_function_add_comment.

2013-10-24  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::function::add_eval): Handle non-NULL
	locations.
	(gcc::jit::context::handle_locations): Fix test for the various
	kinds of declarations, replacing use of DECL_MINIMAL_CHECK,
	which aborts on failure (such as if we saw a type).
	* libgccjit.h (GCC_JIT_BOOL_OPTION_DEBUGINFO): Fix out-of-date
	comment.

2013-10-23  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c: Update for rename of tree-flow.h to tree-cfg.h
	in r203320, for declaration of dump_function_to_file.
	* TODO.rst ("segfault seen in libbacktrace"): Remove - this was
	fixed by Ian in r203810.

2013-10-23  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c: Add missing include of diagnostic-core.h

2013-10-22  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::context::add_error_va): Record the
	first error that occurs on a context.
	(gcc::jit::context::get_first_error): New.
	* internal-api.h (gcc::jit::context::get_first_error): New.
	(gcc::jit::context::m_first_error_str): New.
	* libgccjit.c (gcc_jit_context_get_first_error): New.
	* libgccjit.h (gcc_jit_context_get_first_error): New.
	* libgccjit.map (gcc_jit_context_get_first_error): New.

2013-10-21  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::context::compile): Correctly cleanup
	timevars in error-handling, preventing an issue where an error
	on a context left timevar.c in an unstopped state, leading to an
	assertion failure when restarting timevars in the next compile.
	Found via fuzz-testing.

2013-10-21  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::context::postprocess): Show source
	line numbers (if any) in gimple dump.

2013-10-21  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.c (gcc_jit_function_new_local): Use a more clear
	error message for the case where someone tries to add a local
	to a function imported from elsewhere.

2013-10-21  David Malcolm  <dmalcolm@redhat.com>

	* TODO.rst ("the C unary prefix "&" operator"): Remove completed item.
	* internal-api.c (gcc::jit::lvalue::get_address): New.
	* internal-api.h (gcc::jit::lvalue::get_address): New.
	* libgccjit.c (gcc_jit_lvalue_get_address): New.
	* libgccjit.h (gcc_jit_lvalue_get_address): New.
	* libgccjit.map (gcc_jit_lvalue_get_address): New.

2013-10-18  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::context::new_param): Add context
	argument to ctor for rvalue and its subclasses.
	(gcc::jit::context::new_global): Likewise.
	(gcc::jit::context::new_rvalue_from_int): Likewise.
	(gcc::jit::context::new_rvalue_from_double): Likewise.
	(gcc::jit::context::new_rvalue_from_ptr): Likewise.
	(gcc::jit::context::new_string_literal): Likewise.
	(gcc::jit::context::new_call): Likewise.
	(gcc::jit::context::new_array_lookup): Likewise.
	(gcc::jit::function::new_local): Likewise.
	(gcc::jit::context::new_binary_op): Likewise; add new
	operations.
	(gcc::jit::context::new_comparison): Likewise; add new
	comparisons.
	(gcc::jit::context::as_truth_value): New.
	(gcc::jit::context::new_unary_op): New.
	(gcc::jit::context::new_field_access): Convert to a helper
	method for use by the access_fields methods.
	(gcc::jit::context::new_dereference): New.
	(gcc::jit::lvalue::access_field): New.
	(gcc::jit::rvalue::access_field): New.
	(gcc::jit::rvalue::dereference_field): New.
	(gcc::jit::rvalue::dereference): New.
	* internal-api.h (gcc::jit::context::new_unary_op): New.
	(gcc::jit::context::new_field_access): Work
	(gcc::jit::context::new_dereference): New.
	(gcc::jit::context::as_truth_value): New.
	(gcc::jit::rvalue): Add a context field.
	(gcc::jit::rvalue::access_field): New.
	(gcc::jit::rvalue::dereference_field): New.
	(gcc::jit::rvalue::dereference): New.
	(gcc::jit::lvalue::lvalue): Add context to ctor.
	(gcc::jit::lvalue::access_field): New.
	(gcc::jit::param::param): Add context to ctor.
	* libgccjit.c (gcc_jit_context_new_unary_op): New.
	(gcc_jit_context_new_field_access): Remove.
	(gcc_jit_lvalue_access_field): New.
	(gcc_jit_rvalue_access_field): New.
	(gcc_jit_rvalue_dereference_field): New.
	(gcc_jit_rvalue_dereference): New.
	*libgccjit.h (enum gcc_jit_unary_op): New.
	(gcc_jit_context_new_unary_op): New.
	(enum gcc_jit_binary_op): Document values, and add...
	(GCC_JIT_BINARY_OP_DIVIDE): New.
	(GCC_JIT_BINARY_OP_MODULO): New.
	(GCC_JIT_BINARY_OP_BITWISE_AND): New.
	(GCC_JIT_BINARY_OP_BITWISE_XOR): New.
	(GCC_JIT_BINARY_OP_BITWISE_OR): New.
	(GCC_JIT_BINARY_OP_LOGICAL_AND): New.
	(GCC_JIT_BINARY_OP_LOGICAL_OR): New.
	(enum gcc_jit_comparison): Document values, and add...
	(GCC_JIT_COMPARISON_EQ): New.
	(GCC_JIT_COMPARISON_NE): New.
	(GCC_JIT_COMPARISON_LE): New.
	(GCC_JIT_COMPARISON_GT): New.
	(GCC_JIT_COMPARISON_GE): New.
	(gcc_jit_context_new_field_access): Remove.
	(gcc_jit_lvalue_access_field): New.
	(gcc_jit_rvalue_access_field): New.
	(gcc_jit_rvalue_dereference_field): New.
	(gcc_jit_rvalue_dereference): New.
	* libgccjit.map (gcc_jit_context_new_field_access): Remove.
	(gcc_jit_lvalue_access_field): New.
	(gcc_jit_rvalue_access_field): New.
	(gcc_jit_rvalue_dereference_field): New.
	(gcc_jit_rvalue_dereference): New.
	* TODO.rst: Update

2013-10-18  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::context::get_type): Improve error
	message, and report the bogus value.
	(gcc::jit::context::new_binary_op): Likewise.
	(gcc::jit::context::new_comparison): 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::compile): Likewise, and make the errors
	block the creation of result, rather than just the return
	value of the client callback.
	(gcc::jit::context::add_error): Add varargs and provide
	implementation, calling into...
	(gcc::jit::context::add_error_va): New.
	* internal-api.h (GNU_PRINTF): New.
	(gcc::jit::context::add_error): Add varargs and GNU_PRINTF
	attribute macro.
	(gcc::jit::context::add_error_va): New.
	(gcc::jit::context::errors_occurred): New.
	(gcc::jit::context::m_error_count): New.
	(gcc::jit::function::get_kind): New.
	* libgccjit.c (JIT_BEGIN_STMT): New.
	(JIT_END_STMT): New.
	(RETURN_VAL_IF_FAIL): New.
	(RETURN_NULL_IF_FAIL): New.
	(RETURN_IF_FAIL): New.
	(RETURN_IF_NOT_INITIAL_CTXT): New.
	(RETURN_NULL_IF_NOT_INITIAL_CTXT): New.
	(RETURN_NULL_IF_NOT_CALLBACK_CTXT): New.
	(RETURN_IF_NOT_FUNC_DEFINITION): New.
	(RETURN_NULL_IF_NOT_FUNC_DEFINITION): New.
	(jit_error): New.
	(gcc_jit_context_set_code_factory): Use new error-checking
	macros.
	(ASSERT_WITHIN_CALLBACK): Remove.
	(ASSERT_NOT_WITHIN_CALLBACK): Remove.
	(gcc_jit_context_new_location): Use new error-checking macros.
	(gcc_jit_context_get_type): Likewise.
	(gcc_jit_type_get_pointer): Likewise.
	(gcc_jit_type_get_const): Likewise.
	(gcc_jit_context_new_field): Likewise.
	(gcc_jit_context_new_struct_type): Likewise.
	(gcc_jit_context_new_param): Likewise.
	(gcc_jit_param_as_lvalue): Likewise.
	(gcc_jit_param_as_rvalue): Likewise.
	(gcc_jit_context_new_function): Likewise.
	(gcc_jit_function_new_forward_label): Likewise.
	(gcc_jit_context_new_global): Likewise.
	(gcc_jit_lvalue_as_rvalue): 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_new_string_literal): Likewise.
	(gcc_jit_context_new_binary_op): Likewise.
	(gcc_jit_context_new_comparison): Likewise.
	(gcc_jit_context_new_call): Likewise.
	(gcc_jit_context_new_array_lookup): Likewise.
	(gcc_jit_context_new_field_access): Likewise.
	(gcc_jit_function_new_local): Likewise.
	(gcc_jit_function_add_label): Likewise.
	(gcc_jit_function_place_forward_label): Likewise.
	(gcc_jit_function_add_eval): Likewise.
	(gcc_jit_function_add_assignment): Likewise.
	(gcc_jit_function_add_assignment_op): Likewise.
	(gcc_jit_function_add_conditional): Likewise.
	(gcc_jit_function_add_jump): Likewise.
	(gcc_jit_function_add_return): Likewise.
	(gcc_jit_function_new_loop): Likewise.
	(gcc_jit_loop_end): 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_compile): Likewise.
	(gcc_jit_result_get_code): Likewise.
	(gcc_jit_result_release): Likewise.
	* libgccjit.h (gcc_jit_function_new_forward_label): Clarify
	behavior.
	(gcc_jit_function_add_label): Likewise.

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

	* internal-api.c (gcc::jit::context::get_void_type): Remove.
	(gcc::jit::context::get_char_type): Remove.
	(gcc::jit::context::get_int_type): Remove.
	(gcc::jit::context::get_float_type): Remove.
	(gcc::jit::context::get_double_type): Remove.
	(get_tree_node_for_type): New.
	(gcc::jit::context::get_type): New.
	(gcc::jit::context::new_rvalue_from_double): New.
	(gcc::jit::context::new_rvalue_from_ptr): New.
	* internal-api.h (gcc::jit::context::get_void_type): Remove.
	(gcc::jit::context::get_char_type): Remove.
	(gcc::jit::context::get_int_type): Remove.
	(gcc::jit::context::get_float_type): Remove.
	(gcc::jit::context::get_double_type): Remove.
	(gcc::jit::context::get_type): New.
	(gcc::jit::context::new_rvalue_from_double): New.
	(gcc::jit::context::new_rvalue_from_ptr): New.
	* libgccjit.c (gcc_jit_context_get_void_type): Remove.
	(gcc_jit_context_get_char_type): Remove.
	(gcc_jit_context_get_int_type): Remove.
	(gcc_jit_context_get_float_type): Remove.
	(gcc_jit_context_get_double_type): Remove.
	(gcc_jit_context_get_type): New.
	(gcc_jit_context_new_rvalue_from_double): New.
	(gcc_jit_context_new_rvalue_from_ptr): New.
	* libgccjit.h (gcc_jit_context_get_void_type): Remove.
	(gcc_jit_context_get_char_type): Remove.
	(gcc_jit_context_get_int_type): Remove.
	(gcc_jit_context_get_float_type): Remove.
	(gcc_jit_context_get_double_type): Remove.
	(enum gcc_jit_types): New.
	(gcc_jit_context_get_type): New.
	(gcc_jit_context_new_rvalue_from_double): New.
	(gcc_jit_context_new_rvalue_from_ptr): New.
	* libgccjit.map (gcc_jit_context_get_void_type): Remove.
	(gcc_jit_context_get_char_type): Remove.
	(gcc_jit_context_get_int_type): Remove.
	(gcc_jit_context_get_float_type): Remove.
	(gcc_jit_context_get_double_type): Remove.
	(enum gcc_jit_types): New.
	(gcc_jit_context_get_type): New.
	(gcc_jit_context_new_rvalue_from_double): New.
	(gcc_jit_context_new_rvalue_from_ptr): New.
	* TODO.rst ("access to more primitive types"): Remove
	completed item.

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

	* libgccjit.h: Add and reword comments throughout.

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

	* TODO.rst: Update.

2013-10-16  David Malcolm  <dmalcolm@redhat.com>

	* TODO.rst (gcc_jit_context_new_local): Remove completed item.
	* internal-api.c (gcc::jit::context::new_local): Replace with...
	(gcc::jit::function::new_local): ...this, and change return type
	from (local*) to (lvalue*).
	* internal-api.h (gcc::jit::local): Eliminate.
	(gcc::jit::context::new_local): Replace with...
	(gcc::jit::function::new_local): ...this, and change return type
	from (local*) to (lvalue*).
	* libgccjit.c (gcc_jit_local): Eliminate.
	(gcc_jit_context_new_local): Replace with...
	(gcc_jit_function_new_local): ...this, and change return type
	from (gcc_jit_local*) to (gcc_jit_lvalue*).
	(gcc_jit_local_as_lvalue): Remove.
	(gcc_jit_local_as_rvalue): Remove.
	* libgccjit.h (gcc_jit_local): Remove.
	(gcc_jit_context_new_local): Replace with...
	(gcc_jit_function_new_local): ...this, and change return type
	from (gcc_jit_local*) to (gcc_jit_lvalue*).
	(gcc_jit_local_as_lvalue): Remove.
	(gcc_jit_local_as_rvalue): Remove.
	* libgccjit.map (gcc_jit_context_new_local): Replace with...
	(gcc_jit_function_new_local): ...this.
	(gcc_jit_local_as_lvalue): Remove.
	(gcc_jit_local_as_rvalue): Remove.

2013-10-15  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (gcc_jit_location): Rewrite comment to reflect
	that this part of the API is now implemented.
	("Functions for use within the code factory."): Add notes on
	memory-management and lifetimes.
	* notes.txt: Update diagram to show handle_locations.

2013-10-15  David Malcolm  <dmalcolm@redhat.com>

	* TODO.rst: Update.

2013-10-14  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.map: Alphabetize the exported symbols.

2013-10-14  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::context::new_field): Implement
	location support, by calling set_tree_location.
	(gcc::jit::context::new_struct_type): Likewise.
	(gcc::jit::context::new_param): Likewise.
	(gcc::jit::context::new_function): Likewise.
	(gcc::jit::context::new_global): Likewise.
	(gcc::jit::context::new_local): Likewise.
	(gcc::jit::context::new_binary_op): Likewise.
	(gcc::jit::context::new_comparison): Likewise.
	(gcc::jit::context::new_call): Likewise.
	(gcc::jit::context::new_array_lookup): Likewise.
	(gcc::jit::context::new_field_access): Likewise.
	(gcc::jit::context::add_assignment): Likewise.
	(gcc::jit::context::add_conditional): Likewise.
	(gcc::jit::function::add_label): Likewise.
	(gcc::jit::function::add_jump): Likewise.
	(gcc::jit::function::add_return): Likewise.
	(gcc::jit::function::place_forward_label): Likewise, adding
	location parameter.
	(gcc::jit::loop::loop): Add loc arg to place_forward_label.
	(gcc::jit::loop::end): Likewise.
	(gcc::jit::context::invoke_code_factory): Call handle_locations
	after the client callback is done, before any GC can run.
	(line_comparator): New.
	(location_comparator): New.
	(gcc::jit::context::handle_locations): New.
	(gcc::jit::context::new_location): New.
	(gcc::jit::context::set_tree_location): New.
	(gcc::jit::context::get_source_file): New.
	(gcc::jit::source_file::source_file): New.
	(gcc::jit::source_file::get_source_line): New.
	(gcc::jit::source_line::source_line): New.
	(gcc::jit::source_line::get_location): New.
	(gcc::jit::location::location): New.
	* internal-api.h (gcc::jit::context::new_location): New.
	(gcc::jit::context::set_tree_location): New.
	(gcc::jit::context::handle_locations): New.
	(gcc::jit::context::get_source_file): New.
	(gcc::jit::context::m_source_files): New field.
	(gcc::jit::context::m_cached_locations: New field.
	(gcc::jit::function::place_forward_label): Add location
	parameter.
	(gcc::jit::function::set_tree_location): New.
	(gcc::jit::source_file): New class.
	(gcc::jit::source_line): New class.
	(gcc::jit::location): New class.
	* libgccjit.c (gcc_jit_context_new_location): New.
	(gcc_jit_function_place_forward_label): Add location parameter,
	changing public API.
	* libgccjit.h (gcc_jit_context_new_location): New.
	(gcc_jit_function_place_forward_label): Add location parameter,
	changing public API.
	* libgccjit.map (gcc_jit_context_new_location): New.
	(main): Remove obsolete export.
	(called_function): Likewise.

2013-10-11  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c: Update includes to reflect move of decl of
	dump_function_to_file from tree-dump.h to tree-flow.h in
	r203320.

2013-10-10  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (GCC_JIT_BOOL_OPTION_DUMP_SUMMARY): New.
	* internal-api.c ((gcc::jit::context::compile): Implement
	GCC_JIT_BOOL_OPTION_DUMP_SUMMARY.

2013-10-10  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (GCC_JIT_BOOL_OPTION_SELFCHECK_GC): Improve
	documentation.
	(GCC_JIT_BOOL_OPTION_DUMP_INITIAL_GIMPLE): Likewise.

2013-10-10  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h: Clarify the separation of the API into "outside
	the callback" and "within the callback" entrypoints, moving the
	latter to the bottom of the header.

2013-10-10  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h: Add comments throughout.

2013-10-09  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::context::~context): Fix indentation;
	clean up memory allocations when using
	GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES.

2013-10-09  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (enum gcc_jit_bool_option): Add
	GCC_JIT_BOOL_OPTION_DUMP_EVERYTHING.
	* internal-api.c (gcc::jit::context::compile): Implement
	GCC_JIT_BOOL_OPTION_DUMP_EVERYTHING.

2013-10-09  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.h (enum gcc_jit_bool_option): Add
	GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES.
	* internal-api.c (gcc::jit::context::~context): Implement
	GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES.

2013-10-08  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::context::compile): Use mkdtemp to
	create a temporary directory and create the .s and .so files
	there, rather than writing to "fake.s" and then reading it to
	make "fake.so", then using it, fixing various possible race
	attacks by processes that can write to the process' current
	working directory.
	(gcc::jit::context::~context): Clean up tempfiles and path
	buffers.
	* internal-api.h (gcc::jit::context): Add fields
	m_path_template, m_path_tempdir, m_path_c_file, m_path_s_file,
	m_path_so_file.

2013-10-08  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::context::new_function): Fix leak of
	arg_types.

2013-10-08  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::context::~context): New.
	* internal-api.h (gcc::jit::context::~context): New.

2013-10-07  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::context::compile): Implement
	GCC_JIT_BOOL_OPTION_SELFCHECK_GC.

	* libgccjit.h (enum gcc_jit_bool_option): Add
	GCC_JIT_BOOL_OPTION_SELFCHECK_GC.

2013-10-07  David Malcolm  <dmalcolm@redhat.com>

	* Make-lang.in: Rename JIT_OBJS to jit_OBJS.  Delete manual
	dependencies.

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

	* internal-api.c (gcc::jit::context::new_global): New.
	* internal-api.h (gcc::jit::context::new_global): New.
	* libgccjit.c (gcc_jit_context_new_global) New.
	* libgccjit.h (gcc_jit_context_new_global) New.
	* libgccjit.map: Add gcc_jit_context_new_global.

2013-10-03  David Malcolm  <dmalcolm@redhat.com>

	* libgccjit.c (gcc_jit_param_as_lvalue): New.
	* libgccjit.h (gcc_jit_param_as_lvalue): New.
	* libgccjit.map: Add gcc_jit_param_as_lvalue.

2013-10-03  David Malcolm  <dmalcolm@redhat.com>

	* internal-api.c (gcc::jit::function::postprocess): Dump gimple
	using dump_function_to_file rather than debug_gimple_seq so that
	we also get the declaration.

2013-10-03  David Malcolm  <dmalcolm@redhat.com>

	* Make-lang.in: New.
	* TODO.rst: New.
	* config-lang.in: New.
	* dummy-frontend.c: New.
	* internal-api.c: New.
	* internal-api.h: New.
	* libgccjit.c: New.
	* libgccjit.h: New.
	* libgccjit.map: New.
	* notes.txt: New.

Copyright (C) 2013-2014 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.
