Hi,
On Mon, 16 Mar 2015 20:31:53, Hans-Peter Nilsson wrote: > > On Mon, 16 Mar 2015, Eric Botcazou wrote: >>> If we have BIGGEST_ALIGNMENT=16 that means we have likely a 16 bit >>> architecture. I doubt that the strict alignment code makes any sense for >>> modesize> BIGGEST_ALIGNMENT. >> >> Note that m68k is a 32-bit port (UNITS_PER_WORD is 4) but, by definition of >> BIGGEST_ALIGNMENT, not honoring an alignment larger than it is perfectly OK. > > The context of the above statement is somewhat ambiguous: if the > statement is taken to include "no matter what is specified in > the program, including use of __attribute__ ((__aligned__ ...))" > then I have to object. (I guess Eric, you didn't actually mean > that, though.) > > The definition of BIGGEST_ALIGNMENT is (tm.texi.in): > "Biggest alignment that any data type can require on this > machine, in bits. Note that this is not the biggest alignment > that is supported, just the biggest alignment that, when > violated, may cause a fault." > > So, IMNSHO we'd better *support* a *larger* alignment, as in "if > the code specified it by explicit means" at least up to > MAX_OFILE_ALIGNMENT. But, "perfectly OK" when the code didn't > explicitly say anything else. > Absolutely. The idea if this patch, is to *require* the use of __attribute__((__aligned__(x))) for all structures that need the strict volatile bitfields semantics. At least if the ABI has BIGGEST_ALIGNMENT<BITS_PER_WORD. I don't see any alternative. Thanks Bernd.