This is the mail archive of the
mailing list for the GCC project.
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- To: rth at redhat dot com
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Mon, 3 Dec 01 22:23:31 EST
- Subject: Re: alias.c:nonoverlapping_component_refs_p
The existing nonoverlapping_memrefs_p didn't check for
(and (...) (const_int -8))
style addresses, so I assumed they were handled beforehand.
No, that wasn't the case I was talking about.
Checking, it appears that the change_address used to create the
unaligned memory reference will clear the MEM_EXPR and MEM_OFFSET
attributes. At least on Alpha; I can't think at the moment who else
is forced to use this sort of scheme.
What I meant is the *aligned* case, where you have a field that is a char
which is, say, at byte 6 of a 4-byte aligned record. You can load the
second word and then shift to get the char. However, I'm realizing that's
actually OK since set_mem_attributes won't see that load, but instead
the thing that would have been passed to it is a REG. I don't think
we'd be abel to conclude anything about that load.