User account creation filtered due to spam.
When compiling SSE code without optimization (or when using it
in a way that makes gcc think it needs to spill xmm registers to
the stack), gcc will not make sure the stack is 16-byte aligned.
That causes the SSE store instruction to generate a segmentation
fault. This behavior is in 3.1.1 (earliest I have) up to the
current 3.4 CVS.
3.4 20030129 (experimental)
System: Linux hellhound 2.4.20-wolk4.0s-pre7 #2 Wed Jan 22 13:14:55 CET 2003 i686 AMD Athlon(tm) XP 2000+ AuthenticAMD GNU/Linux
configured with: ./configure --program-transform-name=s/^/e/ --prefix=/opt/gcc --with-local-prefix=/usr/local --disable-nls : (reconfigured) ./configure --program-transform-name=s/^/e/ --prefix=/opt/gcc --with-local-prefix=/usr/local --disable-nls --enable-__cxa_atexit
$ cat ssebug.c
static float scale=32768.f;
$ gcc -o ssebug ssebug.c -msse
align the stack variables.
Since spilling to the stack in most cases negates the
performance gain the programmer hopes for with SSE, I also
suggest a compiler warning in this case.
Responsible-Changed-Why: Bernd, would be possible to look into the dynamic stack alignment? I can try to prepare updated patches...
State-Changed-Why: This is known problem with runtimes not aligning stack properly. The frame of function main is missaligned, other functions works. Bernd has code for dynamic stack alignment, hope it will get applied one day
Jan, we need to have a specific bug this is a duplicate of...
*** Bug 12091 has been marked as a duplicate of this bug. ***
This is a dup of bug 10395, it is a problem in main and in pthreads call-backs.
*** This bug has been marked as a duplicate of 10395 ***