This is the mail archive of the
mailing list for the GCC project.
Re: [patch] Crossjumping corrupts alias info
- From: Andreas Krebbel <Andreas dot Krebbel at web dot de>
- To: Richard Henderson <rth at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 4 Mar 2004 14:52:55 +0100
- Subject: Re: [patch] Crossjumping corrupts alias info
- References: <firstname.lastname@example.org> <20040220230123.GE29641@redhat.com>
>> + if ((MEM_OFFSET (x) != MEM_OFFSET (y))
>> + || ! mem_expr_equal_p (MEM_EXPR (x), MEM_EXPR (y)))
>MEM_OFFSET should be compared (and cleared) independently of MEM_EXPR.
For equal expressions with different offsets I've only to clear the offsets - that's clear, but I think
that the offset doesn't make sense if the expressions differ - right? So for different expression
with equal offsets the offsets should be cleared as well.
>> + if (MEM_SIZE (x) != MEM_SIZE (y))
>> + if (MEM_ALIGN (x) != MEM_ALIGN (y))
I understand this for the alignment data, but is this right for the size? The size info is used
in nonoverlapping_memrefs_p to decide whether referenced memory areas can overlap or not.
To my mind the probability to overlap increases with the size of the memory areas. In order to
be on the safe side the bigger size should come through.