http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52436
--- Comment #6 from Marc Glisse <glisse at gcc dot gnu.org> 2013-04-02 14:36:59 UTC --- (In reply to comment #5) > No, get_addr_base_and_unit_offset_1 only is supposed to return the > addressable offset into an object - it doesn't care about access sizes. It is also allowed to say "bad idea, I will return NULL", but ok. > But you can't really do what you do there. You are possibly > transforming [...] Good point, thanks. > which is not correct, obviously. "combining" with memory > accesses isn't trivial, certainly not a task I would consider > for forwprop. I can't think of a suitable existing pass > that would combine this, but value-numbering should eventually > value-number both cases the same at least. I guess that leaves the vector lowering pass as the easiest alternative for PR55266: split all unsupported memory reads into supported reads and a constructor (and similarly, split writes into bit_field_refs and writes) and hope that nothing does the reverse transformation.