http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52436



--- Comment #4 from Marc Glisse <glisse at gcc dot gnu.org> 2013-04-02 14:08:57 
UTC ---

(In reply to comment #3)

> I'd re-organize it like



Ok, I'll try something like that.



> it avoids building a tree just to feed it into get_addr_base_and_unit_offset



The idea was that there would be almost no cases where this was done and no

simplification occurred. If a transformation is indeed done, building one tree

is not that expensive, especially if it avoids code duplication.



> It also avoids it if the access is not of byte-granularity which

> get_addr_base_and_unit_offset does not even consider (it assumes it is fed

> the argument of an ADDR_EXPR which obviously is byte-aligned).

> 

> The tree-flow-inline.h bits look ok.



In get_addr_base_and_unit_offset_1 I already check if the offset is a multiple

of BITS_PER_UNIT, I should probably check that the size is a multiple as well,

no?



> I'm not sure what you need the forwprop / tree-ssa-propagate changes for.



I need something to call fold on a bit_field_ref of a mem_ref. For PR55266, the

vector lowering pass produces a mem_ref and a bit_field_ref in two distinct

gimple statements, and nothing tries to combine them.

Reply via email to