On Wed, 2019-06-26 at 11:07 +0000, Andrea Corallo wrote:
> Hi David,
> thanks for the suggestions.
> Updated version for the bitfield libgccjit support patch here
> addressing comments.
>
> test-error-gcc_jit_context_new_bitfield-invalid-width.c is reworked
> and now assume that the long of the compiler compiling the test is of
> the same size of the libgccjit long.
> I'm not sure this assumption is sufficent, in case is not we have to
> find another way around this.
>
> Checked with make check-jit runs clean.
>
> Bests
>
> Andrea
>
>
> 2019-06-20 Andrea Corallo [email protected]
>
> * docs/topics/compatibility.rst (LIBGCCJIT_ABI_12): New ABI tag.
> * docs/topics/types.rst: Add gcc_jit_context_new_bitfield.
> * jit-common.h (namespace recording): Add class bitfield.
> * jit-playback.c:
> (DECL_C_BIT_FIELD, SET_DECL_C_BIT_FIELD): Add macros.
> (playback::context::new_bitfield): New method.
> (playback::compound_type::set_fields): Add bitfield support.
> (playback::lvalue::mark_addressable): Was jit_mark_addressable make
> this
> a method of lvalue plus return a bool to communicate success.
> (playback::lvalue::get_address): Check for jit_mark_addressable
> return
> value.
> * jit-playback.h (new_bitfield): New method.
> (class bitfield): New class.
> (class lvalue): Add jit_mark_addressable method.
> * jit-recording.c (recording::context::new_bitfield): New method.
> (recording::bitfield::replay_into): New method.
> (recording::bitfield::write_to_dump): Likewise.
> (recording::bitfield::make_debug_string): Likewise.
> (recording::bitfield::write_reproducer): Likewise.
> * jit-recording.h (class context): Add new_bitfield method.
> (class field): Make it derivable by class bitfield.
> (class bitfield): Add new class.
> * libgccjit++.h (class context): Add new_bitfield method.
> * libgccjit.c (struct gcc_jit_bitfield): New structure.
> (gcc_jit_context_new_bitfield): New function.
> * libgccjit.h
> (LIBGCCJIT_HAVE_gcc_jit_context_new_bitfield) New macro.
> (gcc_jit_context_new_bitfield): New function.
> * libgccjit.map (LIBGCCJIT_ABI_12) New ABI tag.
>
>
> 2019-06-20 Andrea Corallo [email protected]
>
> * jit.dg/all-non-failing-tests.h: Add test-accessing-bitfield.c.
> * jit.dg/test-accessing-bitfield.c: New testcase.
> * jit.dg/test-error-gcc_jit_context_new_bitfield-invalid-type.c:
> Likewise.
> * jit.dg/test-error-gcc_jit_context_new_bitfield-invalid-width.c:
> Likewise.
> * jit.dg/test-error-gcc_jit_lvalue_get_address-bitfield.c:
> Likewise.
Thanks for the updated patch.
One last nit:
[...]
> diff --git a/gcc/jit/jit-playback.c b/gcc/jit/jit-playback.c
> index b74495c..ae8a732 100644
> --- a/gcc/jit/jit-playback.c
> +++ b/gcc/jit/jit-playback.c
> @@ -47,6 +47,12 @@ along with GCC; see the file COPYING3. If not see
> #include "jit-builtins.h"
> #include "jit-tempdir.h"
>
> +/* Compare with gcc/c-family/c-common.h
We should say what to compare it against:
Compare with "DECL_C_BIT_FIELD" etc in gcc/c-family/c-common.h
> + This is redefined here to avoid depending from the C
frontend. */
s/from/on/ also, FWIW
> +#define DECL_JIT_BIT_FIELD(NODE) \
> + (DECL_LANG_FLAG_4 (FIELD_DECL_CHECK (NODE)) == 1)
> +#define SET_DECL_JIT_BIT_FIELD(NODE) \
> + (DECL_LANG_FLAG_4 (FIELD_DECL_CHECK (NODE)) = 1)
With that change, the patch is good for trunk - thanks for all your
work on this.
Are you working on getting SVN commit access, or do you want me to
commit your two patches on your behalf?
Dave