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