Proposed patch: get_inner_reference is not always returns VOIDmode for bit fields as described.

Richard Kenner
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 mailing list