http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48124
--- Comment #13 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-02-01 13:57:52 UTC --- Doesn't work. MEM_SIZE also seems to be somewhat random, because we re-initialize it via set_mem_attributes_minus_bitpos. So we can't fixup the caller to get_best_mode easily without passing down extra knowledge. We could pass down fieldmode from store_bit_field_1 to store_fixed_bit_field and give it some more meaningful mode in the ultimate caller (expand_assignment). But then there is the HAVE_insv path which uses mode_for_extraction which would need to be disabled if that mode is bigger than fieldmode (but we don't do that at the moment, not sure why). As usual, bitfield expansion seems to be quite a messy area.