Hi Jeff,
 
> We're talking about two instructions where if the first executes, then
> the second also executes.  If the memory addresses are the same, then
> their alignment is the same.
> 
> In your case the two instructions are on different execution paths and
> are in fact mutually exclusive.

Sure but it shows we cannot just force the alignment to be the same in all
cases. The loads are reading the same address in the same block but they
are *not* identical. The unaligned stores are emitted by an inlined memset,
and it *aliases* with a later load that uses the same address.

Given they are really different accesses with very different meanings you
can't just force the same MEM for both! The alignment of the memset could
be improved (I think we still don't pass the correct alignment info), but the
alias set would need to continue to be different otherwise we violate the C
aliasing rules.

Wilco
     

Reply via email to