This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH][4.8] C++ memory model bitfield handling rewrite


On Tue, 7 Feb 2012, Hans-Peter Nilsson wrote:

> On Tue, 7 Feb 2012, Richard Guenther wrote:
> > The following patch rewrites the bitfield handling of the C++ memory
> > model and enables it unconditionally to fix PR52080.  As I suggested
> > earlier at some point this moves computation of what the memory model
> > considers the underlying object we may access to the point where we
> > lay out a structure type.  This allows other passes like for example
> > SRA or a new bitfield lowering pass to use a canonical (and correct)
> > addressable object to access bitfields.  The underlying object is
> > represented as a FIELD_DECL that would be a suitable replacement
> > for all bitfield FIELD_DECLs if you wrap it inside a BIT_FIELD_REF
> > (see the gimplify.c hunk).  But the main purpose (for now) is to
> > make use of it in get_bit_range which no longer needs to walk
> > all fields of a record nor build new trees or use get_inner_reference.
> 
> Please excuse an ignorant question: is there somewhere in that
> new code where you should consider target bitfield layout macros
> like EMPTY_FIELD_BOUNDARY and PCC_BITFIELD_TYPE_MATTERS?
> (Just guessing: alignment.)  Or maybe that's a later stage?

No, bitfield layout is unchanged - the only thing that I added
is computing a FIELD_DECL that covers the underlying storage
of a series of adjacent bitfields (as required for example by
the C++ memory model).  This computation simply uses the offsets
of the FIELD_DECLs of the bitfield fields as layed out previously.

Richard.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]