On 01/23/2012 08:51 PM, DJ Delorie wrote: > >> and I think applying strict-volatile-bitfields to enums is probably >> meaningless. > > MCU vendors would disagree. If a location is volatile, it's most > likely hardware, and must be accessed in the user-specified way. > Randomly accessing adjacent locations could cause system failure.
This is not an issue here. The optimization in question in stor-layout tries to find out if a bitfield (volatile or not) is laid out in a way that's equivalent to a natural machine mode. For example, a 2-byte aligned 16 bit value can be HImode on most targets. The earlier patch restricts this optimization for non-volatile bitfields as well, on the grounds that an object may later be declared as volatile even if the bitfield isn't declared volatile in the struct definition. Strict-volatile-bitfields is concerned with the opposite case: ensuring that an "int x:8;" is accessed only with int-sized accesses. My thought was that this is probably pointless with enums, which I think aren't usually thought of as a specific size unlike char/short/int. So, if we see "enum something x:8;" we don't want to prevent the compiler from treating this as a plain QImode non-bitfield member. Bernd