[Bug target/56866] gcc 4.7.x/gcc-4.8.x with '-O3 -march=bdver2' misscompiles glibc-2.17/crypt/sha512.c
winfried.magerl@t-online.de
gcc-bugzilla@gcc.gnu.org
Fri Apr 12 18:42:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56866
--- Comment #7 from Winfried Magerl <winfried.magerl@t-online.de> 2013-04-12 18:42:48 UTC ---
Hi,
On Fri, Apr 12, 2013 at 12:42:26PM +0000, mikpe at it dot uu.se wrote:
> --- Comment #6 from Mikael Pettersson <mikpe at it dot uu.se> 2013-04-12 12:42:26 UTC ---
> I've bootstrapped and regtested gcc-4.7.3 on an Opteron 6278, with and without
> --with-arch=bdver1. With --with-arch=bdver1 there were numerous regressions in
> gcc.dg/vect/ and gcc.target/i386/{,l-}fma*, and one in
> gcc.target/i386/pr42542-4a.c. I don't know if these indicate wrong-code or
> missed-optimization.
something like egrep '^FAIL.+execution' to get the scary
errors (currently I think all that scan-*-errors are simply
false positive).
> I'd be willing to run specific wrong-code test cases on this machine, if
> they're completely standalone (not depending on recent glibc).
Don't know how to pick out single gcc-testcases from the
testsuite for standalone-testing.
In any case it's possible th check the whole package. gcc/glibc have a big
test-suite and it's not necessary to install them to run the test-suite.
And I have already provided the differences I see when enabling 'bdver2'
compared with 'amdfam10'
for gcc something like this (out of the head with typos included):
--------------------------------------------
cd /to/your/favorite/builddir
wget ftp:///ftp.gnu.org/gnu/gcc/gcc-4.8.0/gcc-4.8.0.tar.bz2
tar -xf gcc-4.8.0.tar.bz2
mkdir build
mkdir build-bdver1
cd build/
../gcc-4.8.0/configure --enable-multilib=no --enable-languages='c,c++'
make -j8 >& make.out
make -j8 -k check >& check.out
../gcc-4.8/contrib/test_summary >& test_summary.out
cd ../build-bdver1
../gcc-4.8.0/configure --enable-multilib=no --enable-languages='c,c++'
--with-arch=bdver1
make -j8 >& make.out
make -j8 -k check >& check.out
../gcc-4.8/contrib/test_summary >& test_summary.out
cd ..
diff -u build/test_summary.out build-bdver1/test_summary.out | egrep
'^\+.+execution'
----------------------------------------------
some notes:
--enable-multilib=no -> only x86_64
--enable-languages='c,c++' -> only c-tests are of interest
make -j8 -> depends on your CPU
egrep '^\+.+execution' -> for easier comparison with the diff I've
provided
--with-arch=bdver1 -> your CPU is bdver1
for glibc it's something similar:
--------------------------------------------
cd /to/your/favorite/builddir
wget ftp:///ftp.gnu.org/glibc/glibc-2.17.tar.xz
tar -xf glibc-2.17.tar.xz
mkdir build
mkdir build-bdver1
cd build/
export CC='gcc'
export CFLAGS='-O3'
../glibc-2.17/configure
make -j8 >& make.out
make -k -j8 check >& check.out
cd ../build-bdver1
export CC='gcc -march=bdver1'
../glibc-2.17/configure
make -j8 >& make.out
make -k -j8 check >& check.out
cd ..
fgrep '***' build/check.out build-bdver1/check.out
--------------------------------------------
To ensure it's XOP in glibc you can use CC='gcc -mxop' instead
of CC='gcc -march=bdver1'.
regards
winfried
More information about the Gcc-bugs
mailing list