gcc-4.2.2 seems to generating wrong/misaligned code for movapd.
I have used the same test case mentione here (for almost the similar bug)
http://gcc.gnu.org/bugzilla/attachment.cgi?id=6012
The relavent information about the version and the files are as follows:
The version of gcc:
gcc -v
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../../src/gcc-4.2.2/configure
--prefix=/depot/gcc-4.2.2-static --disable-shared
--enable-threads=posix --disable-checking --with-system-zlib
--enable-__cxa_atexit --disable-libunwind-exceptions
--enable-languages=c,c++,objc,fortran --with-cpu=generic
--host=i386-redhat-linux
Thread model: posi
$ gcc -g -O2 -funsigned-bitfields -fsigned-char -ffloat-store -Wformat
-msse2 -mfpmath=sse -c sse.c
$ objdump -Sd sse.o > sse_asm.txt
$ grep movapd sse_asm.txt
a3: 66 0f 28 c2 movapd %xmm2,%xmm0
cb: 66 0f 28 c1 movapd %xmm1,%xmm0
f6: 66 0f 28 c4 movapd %xmm4,%xmm0
165: 66 0f 29 9d 38 fe ff movapd %xmm3,0xfffffe38(%ebp) #<============
185: 66 0f 28 9d 38 fe ff movapd 0xfffffe38(%ebp),%xmm3
Is this a known issue? If so, is there are there any suggested
workarounds (other than upgrading to later versions :-) ?
Regards,
Gowri Kumar
--
Summary: 4.2.2 -mfpmath=sse causes movapd from non-16-byte
aligned address
Product: gcc
Version: 4.2.2
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: gkumar007 at gmail dot com
GCC host triplet: x86_64-redhat-linux
GCC target triplet: x86_64-redhat-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37003