> This is because the structure we are given is: > > (mem/v/j:SI (reg/v/f:SI 110 [ t ]) [3 t_2(D)->a+0 S1 A32]) > > i.e. a 1-byte SImode reference. The strange size comes from the > set_mem_attributes_minus_bitpos code that was mentioned earlier > in the series, where we set the size based on the type even if > it doesn't match the mode.
I think that's wrong, we should have S4 and drop the MEM_EXPR as we would do it with adjust_bitfield_address. In other words, if the size computed from the tree is smaller than the mode size, we don't use it and clear MEM_EXPR. -- Eric Botcazou