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