Proposed patch: get_inner_reference is not always returns VOIDmode for bit fields as described.
Fri Apr 21 02:44:00 GMT 2000
gen_inner_reference is not always working as described. It doesn't
return VOIDmode for bit-fields if they are aligned on byte boundary
and 8 (probably 16 also) bit in size. QImode is returning insted.
That leads that store_field() is not calling store_bit_field() and
that access is generating as usual QI memory store.
As it should.
It seems to be critical for some ARM targets since they are failing to
access to memory mapped I/O with ldrb/strb and define_expand "insv"
used to store bit fields is always operating in SImode.
You'll have to say more about this. Perhaps there's a "volatile" missing
somewhere or code that's not taking volatile into account? But without
volatile, GCC is free to use the most efficient way of doing a store.
More information about the Gcc-patches