http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56866



--- Comment #3 from Winfried Magerl <winfried.mag...@t-online.de> 2013-04-11 
18:46:44 UTC ---

Hi Uros,



On Mon, Apr 08, 2013 at 09:26:51PM +0000, ubizjak at gmail dot com wrote:

>  

> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56866 

>  

> --- Comment #2 from Uros Bizjak <ubizjak at gmail dot com> 2013-04-08 
> 21:26:51 UTC --- 

> > Created attachment 29820 [details] 

> > tar-file with small set of c-files to reproduce the problem 

>  

> I can't recreate the problem with your script (to compile successfully, I 

> removed -static from the command). All binaries were executed without 
> problems 

> on corei7, with provided -march and -O2 flags. The binaries were linked with 

> glibc-2.16, though.



the short setup depends on an installed 2.17 for compatibility and

the '-static' is necessary to see the problem because it looks like

without '-static' the linked libm doesn't use the functions from

'sha512.a' (don't know exactly why).



You can always use the trivial way which should work with every

linux-system:



    compile glibc-2.17 with 'export CC="gcc -march=bdver2"' and

    run test-suite.



I've done some further checks to see which feature show the fault

because I know that '-march=amdfam10' doesn't show the problem.

and it turns out that '-mxop' shows the error (XOP was introduced

with support for bdver1/bdver2).



'-O3 -march=bdver2 -mno-xop'    -> OKAY

'-O3 -march=amdfam10 -mxop'    -> FAIL



All Tests verified on OpenSuSE-11.3 ith gcc-4.7.2 to prevent discussion

about self-compiled libs/gcc/system.



As far as I've read the documentation/source XOP is pure AMD-Feature

and not supported on corei7. Would be great if you can find another

gcc-developer with apropriate CPU to confirm the problem (maybe some

of the developers from @amd.com).



> Please follow the instructions at [1] to provide a *minimized* runtime 
> testcase 

> that exposes the failure, without dependencies on system libc. 



it's already "*minimized* runtime testcase" I can provide and do not

have the necesary skills to go further.



> BTW: From your report it is not clear if the problem is indeed in the 
> compiler, 

> or in the system glibc.



Because I can not guarantee that this bug is pure gcc bug. But from

test-suites (gcc-testsuite/glibc-testsuite) it looks like support

of bdver1/2 in gcc is not working well.



The different test-fails on glibc when enabling bdver1 or bdver2 (sha512-errors

only with -O3):



make[2]: *** [/home/winfried/glibc-cvs/glibc-2.17-xop-none/math/test-float.out]

Error 1

make[2]: ***

[/home/winfried/glibc-cvs/glibc-2.17-xop-none/math/test-double.out] Error 1

make[2]: ***

[/home/winfried/glibc-cvs/glibc-2.17-xop-none/math/test-ifloat.out] Error 1

make[2]: ***

[/home/winfried/glibc-cvs/glibc-2.17-xop-none/math/test-idouble.out] Error 1

make[2]: ***

[/home/winfried/glibc-cvs/glibc-2.17-xop-none/crypt/sha512c-test.out] Error 1

make[2]: ***

[/home/winfried/glibc-cvs/glibc-2.17-xop-none/crypt/sha512test.out] Error 1



Additional erors when compiling recent gcc-4.8.x with '--with-arch=bdver2'

(excluding

additional 203 FAILS for scan-asembler and friends):



+FAIL: gcc.c-torture/execute/pr51581-1.c execution,  -O3 -fomit-frame-pointer

+FAIL: gcc.c-torture/execute/pr51581-1.c execution,  -O3 -fomit-frame-pointer

-funroll-loops

+FAIL: gcc.c-torture/execute/pr51581-1.c execution,  -O3 -fomit-frame-pointer

-funroll-all-loops -finline-functions

+FAIL: gcc.c-torture/execute/pr51581-1.c execution,  -O3 -g

+FAIL: gcc.c-torture/execute/pr51581-2.c execution,  -O3 -fomit-frame-pointer

+FAIL: gcc.c-torture/execute/pr51581-2.c execution,  -O3 -fomit-frame-pointer

-funroll-loops

+FAIL: gcc.c-torture/execute/pr51581-2.c execution,  -O3 -fomit-frame-pointer

-funroll-all-loops -finline-functions

+FAIL: gcc.c-torture/execute/pr51581-2.c execution,  -O3 -g

+FAIL: gcc.c-torture/execute/pr53645.c execution,  -O1

+FAIL: gcc.c-torture/execute/pr53645.c execution,  -O2

+FAIL: gcc.c-torture/execute/pr53645.c execution,  -O3 -fomit-frame-pointer

+FAIL: gcc.c-torture/execute/pr53645.c execution,  -O3 -fomit-frame-pointer

-funroll-loops

+FAIL: gcc.c-torture/execute/pr53645.c execution,  -O3 -fomit-frame-pointer

-funroll-all-loops -finline-functions

+FAIL: gcc.c-torture/execute/pr53645.c execution,  -O3 -g

+FAIL: gcc.c-torture/execute/pr53645.c execution,  -Os

+FAIL: gcc.c-torture/execute/pr53645.c execution,  -Og -g

+FAIL: gcc.c-torture/execute/pr53645.c execution,  -O2 -flto

-fno-use-linker-plugin -flto-partition=none

+FAIL: gcc.c-torture/execute/pr53645.c execution,  -O2 -flto

-fuse-linker-plugin -fno-fat-lto-objects

+FAIL: gcc.dg/vect/pr51581-1.c execution test

+FAIL: gcc.dg/vect/pr51581-2.c execution test

+FAIL: gcc.dg/vect/pr51581-3.c execution test

+FAIL: gcc.dg/vect/pr51581-1.c -flto execution test

+FAIL: gcc.dg/vect/pr51581-2.c -flto execution test

+FAIL: gcc.dg/vect/pr51581-3.c -flto execution test

+FAIL: gcc.target/i386/avx-mul-1.c execution test

+FAIL: gcc.target/i386/avx-pr51581-1.c execution test

+FAIL: gcc.target/i386/avx-pr51581-2.c execution test

+FAIL: gcc.target/i386/sse2-mul-1.c execution test

+FAIL: gcc.target/i386/sse4_1-mul-1.c execution test



SInce this errors only show up with bdver1/2 I think the probability

that gcc has the bug is very high. And because in this specific case

I can reproduce the problem with -mxop it might be a bug in the

xop-implementation.

Also glibc doesn't check for XOP and in the minimal set I've provided

(I know, only usable with glibc-2.17 installed, static libs available

and with CPU bdver1/2) I didn't see any asembler-code.



regards



    winfried



> [1] http://gcc.gnu.org/bugs/ 

>  

> --  

> Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email 

> ------- You are receiving this mail because: ------- 

> You reported the bug.

Reply via email to