http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57748
--- Comment #41 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- (In reply to rguent...@suse.de from comment #40) > The issue is that we added the movmisaling-on-component-ref path > for _correctness_ reasons. Now, if all misaligned accesses end up > being expanded using BLKmode moves then it probably works ok (but > then they are going to be horribly inefficent and wouldn't have > triggered the movmisaling path anyway ...). > > But I'm willing to make the experiment - we've got plenty (well ...) > time to watch out for fallout of this change (and it does simplify > code, something I always like ;)) Ok, then I'll commit part 1 later in the evening. >From my experiments I've learned that when expanding a mov_optab instead of a movmisalign_optab the backend looks at the MEM_ALIGN() info of both sides and based on that information either a movdqa or movdqu is expanded. And in the example that you mentioned, apparently the MEM_ALIGN must be wrong.