http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43814

--- Comment #11 from Maxim Kuvyrkov <mkuvyrkov at gcc dot gnu.org> 2010-12-04 
19:04:29 UTC ---
I looked into CCP a bit and it seems like no alignment analysis whatsoever is
done for either &tmp nor &src[0] in
==
__builtin_memcpy (&tmp, &src[0], 8);
==

That is because
1. ccp_initialize() sees __builtin_memcpy,
2. infers that its return value varies,
3. exits without processing the arguments.

If the code was structured like so
==
D1 = &tmp;
D2 = &src[0];
__builtin_memcpy (D1, D2, 8);
==
CCP would have a better chance inferring alignment for D1 and D2.

I'm mostly walking in the dark trying improve CCP, so any pointers would be
appreciated.

Reply via email to