> > From gcc 3.4: > > > >  /* Validate -mpreferred-stack-boundary= value, or provide default. > >     The default of 128 bits is for Pentium III's SSE __m128, but we > >     don't want additional code to keep the stack aligned when > >     optimizing for code size.  */ > >  ix86_preferred_stack_boundary = (optimize_size > >                                   ? TARGET_64BIT ? 128 : 32 > >                                   : 128); > > > > If you compile code with -Os, you will get 4 byte stack alignment. > > Just step back, we changed stack alignment from 4 byte to 16byte > > for SSE since we couldn't realign stack at the time. Now we can > > realign the stack very efficiently. I think we should do it for SSE > > to support the existing Linux binaries which have 4 byte stack > > alignment. If it helps, I can compare -m32 -O3 -msse2 -mfp-math=sse > > results with SPEC CPU 2006, before and after my patch. > > > > Here are the differences of -m32 -O3 -msse2 -mfpmath=sse -ffast-math > -funroll-loops > before and after my patch: > > 400.perlbench -0.384615% > 401.bzip2 0% > 403.gcc -0.362319% > 429.mcf -0.813008% > 445.gobmk 0.921659% > 456.hmmer 0.549451% > 458.sjeng -0.438596% > 462.libquantum 0% > 464.h264ref 0% > 471.omnetpp -0.478469% > 473.astar -0.645161% > 483.xalancbmk -0.727273% > SPECint(R)_base2006 -0.411523% > 410.bwaves -0.406504% > 416.gamess 0% > 433.milc -1.36986% > 434.zeusmp -0.44843% > 435.gromacs 0% > 436.cactusADM 0% > 437.leslie3d -0.888889% > 444.namd 1.20482% > 447.dealII -0.350877% > 450.soplex -0.31746% > 453.povray 0.458716% > 454.calculix 0% > 459.GemsFDTD 0% > 465.tonto 0% > 470.lbm 0% > 481.wrf 0.480769% > 482.sphinx3 0.940439% > SPECfp(R)_base2006 0% > > I think we should align stack if SSE variables are put on stack. > > -- > H.J. Your patch is buggy, it aligns the stack in functions with vector types but doesn't align if the autovectorizer creates 16-bit SSE instructions (that is even more dangerous than vector types because it may make crashes at random places). You must put that test somewhere else. Mikulas