[Bug middle-end/57003] gcc-4.8.0 breaks -O2 optimization with Wine(64) - links/info/bisect of commits included
kirill.k.smirnov at math dot spbu.ru
gcc-bugzilla@gcc.gnu.org
Tue Apr 23 09:44:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57003
Kirill Smirnov <kirill.k.smirnov at math dot spbu.ru> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kirill.k.smirnov at math
| |dot spbu.ru
--- Comment #7 from Kirill Smirnov <kirill.k.smirnov at math dot spbu.ru> 2013-04-23 09:44:03 UTC ---
It seems gcc over-optimizes series of memcpy() function calls one after
another. The piece of code does not work:
memcpy( buffer, DIR_Windows, len * sizeof(WCHAR) );
memcpy( buffer + len, default_syswow64W, sizeof(default_syswow64W)
There is a wrapper around memcpy() called memcpy_unaligned() to avoid
builtin/inlining.
And these pieces of code work:
memcpy( buffer, DIR_Windows, len * sizeof(WCHAR) );
memcpy_unaligned( buffer + len, default_syswow64W, sizeof(default_syswow64W) );
and
memcpy_unaligned( buffer, DIR_Windows, len * sizeof(WCHAR) );
memcpy( buffer + len, default_syswow64W, sizeof(default_syswow64W) );
I'm sorry for copy-and-pasting wine code as is, I tried but failed to create a
refined test case.
So this case is opposite as previously suggested: the memcpy_unaligned()
wrapper is OK, but native memcpy() is failing.
More information about the Gcc-bugs
mailing list