[Bug middle-end/59990] New: [4.7/4.8/4.9 regression] incorrect memcpy optimization
ebotcazou at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Jan 29 20:31:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59990
Bug ID: 59990
Summary: [4.7/4.8/4.9 regression] incorrect memcpy optimization
Product: gcc
Version: 4.7.3
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: ebotcazou at gcc dot gnu.org
Target: i?86-*-*
This is a regression introduced in the 4.7.x series of compilers, visible on
x86 but probably reproducible on other platforms. If you compile:
extern void abort (void);
unsigned char value[4] = { 66, 9, 160, 255 };
int main (void)
{
volatile float f;
unsigned char a[4];
__builtin_memcpy ((void *)&f, value, 4);
__builtin_memcpy (a, (void *)&f, 4);
if (a[2] != 160)
abort ();
return 0;
}
with optimization enabled, it aborts at run time because FP instructions are
incorrectly used to implement the memcpy operations.
More information about the Gcc-bugs
mailing list