This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.

Right.

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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]