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