https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79320
Bug ID: 79320 Summary: sqrt of negative number do not return NaN with i686-w64-mingw32-gcc on pentiumI7/Windows10 Product: gcc Version: 5.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: daniel.weil at argosim dot com Target Milestone: --- Created attachment 40644 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40644&action=edit Compile me With the cross-compiler i686-w64-mingw32-gcc.exe, on PentiumI7 with Windows10, the sqrt function returns identity instead of NaN. To reproduce the bug: - on a Pentium I7 with windows10 (tried with recent DELL XPS13) - install cygwin with the i686-w64-mingw32-gcc.exe cross-compiler - compiler the attached file ~~~ $ i686-w64-mingw32-gcc.exe -o essai essai.c -v && ./essai Utilisation des specs internes. COLLECT_GCC=i686-w64-mingw32-gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-w64-mingw32/5.4.0/lto-wrapper.exe Cible : i686-w64-mingw32 Configuré avec: /cygdrive/i/szsz/tmpp/cygwin64/mingw64-i686/mingw64-i686-gcc-5.4 .0-3.i686/src/gcc-5.4.0/configure --srcdir=/cygdrive/i/szsz/tmpp/cygwin64/mingw6 4-i686/mingw64-i686-gcc-5.4.0-3.i686/src/gcc-5.4.0 --prefix=/usr --exec-prefix=/ usr --localstatedir=/var --sysconfdir=/etc --docdir=/usr/share/doc/mingw64-i686- gcc --htmldir=/usr/share/doc/mingw64-i686-gcc/html -C --build=i686-pc-cygwin --h ost=i686-pc-cygwin --target=i686-w64-mingw32 --without-libiconv-prefix --without -libintl-prefix --with-sysroot=/usr/i686-w64-mingw32/sys-root --with-build-sysro ot=/usr/i686-w64-mingw32/sys-root --disable-multilib --disable-win32-registry -- enable-languages=c,ada,c++,fortran,lto,objc,obj-c++ --enable-fully-dynamic-strin g --enable-graphite --enable-libgomp --enable-libquadmath --enable-libquadmath-s upport --enable-libssp --enable-version-specific-runtime-libs --with-dwarf2 --wi th-gnu-ld --with-gnu-as --with-tune=generic --with-cloog-include=/usr/include/cl oog-isl --with-system-zlib --enable-threads=posix --libexecdir=/usr/lib Modèle de thread: posix gcc version 5.4.0 (GCC) COLLECT_GCC_OPTIONS='-o' 'essai.exe' '-v' '-mtune=generic' '-march=pentiumpro' /usr/lib/gcc/i686-w64-mingw32/5.4.0/cc1.exe -quiet -v -D_REENTRANT essai.c -qui et -dumpbase essai.c -mtune=generic -march=pentiumpro -auxbase essai -version -o /tmp/ccbqPl1C.s GNU C11 (GCC) version 5.4.0 (i686-w64-mingw32) compilé par GNU C version 5.4.0, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3 warning: GMP header version 6.1.0 differs from library version 6.1.2. warning: MPFR header version 3.1.4 differs from library version 3.1.5. heuristiques GGC: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 le répertoire « /usr/i686-w64-mingw32/sys-root/usr/local/include » est ignoré ca r inexistant le répertoire « /usr/lib/gcc/i686-w64-mingw32/5.4.0/../../../../i686-w64-mingw32 /include » est ignoré car inexistant la recherche pour #include "..." débute ici : la recherche pour #include <...> débute ici: /usr/lib/gcc/i686-w64-mingw32/5.4.0/include /usr/lib/gcc/i686-w64-mingw32/5.4.0/include-fixed /usr/i686-w64-mingw32/sys-root/mingw/include Fin de la liste de recherche. GNU C11 (GCC) version 5.4.0 (i686-w64-mingw32) compilé par GNU C version 5.4.0, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3 warning: GMP header version 6.1.0 differs from library version 6.1.2. warning: MPFR header version 3.1.4 differs from library version 3.1.5. heuristiques GGC: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 94288b9bd2212c08d70115a290bc41ca COLLECT_GCC_OPTIONS='-o' 'essai.exe' '-v' '-mtune=generic' '-march=pentiumpro' /usr/lib/gcc/i686-w64-mingw32/5.4.0/../../../../i686-w64-mingw32/bin/as.exe -v -o /tmp/ccDzZTqz.o /tmp/ccbqPl1C.s Version de l'assembleur GNU 2.25.51 (i686-w64-mingw32) utilisant la version BFD (GNU Binutils) 2.25.51.20150320 COMPILER_PATH=/usr/lib/gcc/i686-w64-mingw32/5.4.0/:/usr/lib/gcc/i686-w64-mingw32 /5.4.0/:/usr/lib/gcc/i686-w64-mingw32/:/usr/lib/gcc/i686-w64-mingw32/5.4.0/:/usr /lib/gcc/i686-w64-mingw32/:/usr/lib/gcc/i686-w64-mingw32/5.4.0/../../../../i686- w64-mingw32/bin/ LIBRARY_PATH=/usr/lib/gcc/i686-w64-mingw32/5.4.0/:/usr/lib/gcc/i686-w64-mingw32/ 5.4.0/../../../../i686-w64-mingw32/lib/../lib/:/usr/i686-w64-mingw32/sys-root/mi ngw/lib/../lib/:/usr/lib/gcc/i686-w64-mingw32/5.4.0/../../../../i686-w64-mingw32 /lib/:/usr/i686-w64-mingw32/sys-root/mingw/lib/ COLLECT_GCC_OPTIONS='-o' 'essai.exe' '-v' '-mtune=generic' '-march=pentiumpro' /usr/lib/gcc/i686-w64-mingw32/5.4.0/collect2.exe -plugin /usr/lib/gcc/i686-w64- mingw32/5.4.0/cyglto_plugin-0.dll -plugin-opt=/usr/lib/gcc/i686-w64-mingw32/5.4. 0/lto-wrapper.exe -plugin-opt=-fresolution=/tmp/ccYN2qLl.res -plugin-opt=-pass-t hrough=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc _eh -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -pl ugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lpthread -plugin-opt= -pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-t hrough=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=- lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_eh -plu gin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt =-pass-through=-lmsvcrt --sysroot=/usr/i686-w64-mingw32/sys-root -m i386pe -Bdyn amic -o essai.exe /usr/i686-w64-mingw32/sys-root/mingw/lib/../lib/crt2.o /usr/li b/gcc/i686-w64-mingw32/5.4.0/crtbegin.o -L/usr/lib/gcc/i686-w64-mingw32/5.4.0 -L /usr/lib/gcc/i686-w64-mingw32/5.4.0/../../../../i686-w64-mingw32/lib/../lib -L/u sr/i686-w64-mingw32/sys-root/mingw/lib/../lib -L/usr/lib/gcc/i686-w64-mingw32/5. 4.0/../../../../i686-w64-mingw32/lib -L/usr/i686-w64-mingw32/sys-root/mingw/lib /tmp/ccDzZTqz.o -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lgcc_eh -lmoldname -l mingwex -lmsvcrt /usr/i686-w64-mingw32/sys-root/mingw/lib/../lib/default-manifes t.o /usr/lib/gcc/i686-w64-mingw32/5.4.0/crtend.o sqrt(-2.000000)=-2.000000, is nan : 0 acos(-2.000000)=-1.#IND00, is nan : 1 sqrt(-1.500000)=-1.500000, is nan : 0 acos(-1.500000)=-1.#IND00, is nan : 1 sqrt(-1.000000)=-1.000000, is nan : 0 acos(-1.000000)=3.141593, is nan : 0 sqrt(-0.500000)=-0.500000, is nan : 0 acos(-0.500000)=2.094395, is nan : 0 sqrt(0.000000)=0.000000, is nan : 0 acos(0.000000)=1.570796, is nan : 0 sqrt(0.500000)=0.707107, is nan : 0 acos(0.500000)=1.047198, is nan : 0 sqrt(1.000000)=1.000000, is nan : 0 acos(1.000000)=0.000000, is nan : 0 sqrt(1.500000)=1.224745, is nan : 0 acos(1.500000)=-1.#IND00, is nan : 1 sqrt(2.000000)=1.414214, is nan : 0 acos(2.000000)=-1.#IND00, is nan : 1 ~~~ * and observe that the acos function returns NaN for absolute value above 1, but sqrt (x) returns x for negative value!!!! The bug is processor-dependant and seems to happen only with last version of gcc. Configuration used : ~~~ $ uname -a CYGWIN_NT-10.0-WOW PC-Daniel-ARGOSIM 2.6.1(0.305/5/3) 2016-12-16 11:50 i686 Cygwin Windows Config: C:\Users\daniel>ver Microsoft Windows [version 10.0.14393] gcc: $ i686-w64-mingw32-gcc.exe -v Utilisation des specs internes. COLLECT_GCC=i686-w64-mingw32-gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-w64-mingw32/5.4.0/lto-wrapper.exe Cible : i686-w64-mingw32 Configuré avec: /cygdrive/i/szsz/tmpp/cygwin64/mingw64-i686/mingw64-i686-gcc-5.4.0-3.i686/src/gcc-5.4.0/configure --srcdir=/cygdrive/i/szsz/tmpp/cygwin64/mingw64-i686/mingw64-i686-gcc-5.4.0-3.i686/src/gcc-5.4.0 --prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc --docdir=/usr/share/doc/mingw64-i686-gcc --htmldir=/usr/share/doc/mingw64-i686-gcc/html -C --build=i686-pc-cygwin --host=i686-pc-cygwin --target=i686-w64-mingw32 --without-libiconv-prefix --without-libintl-prefix --with-sysroot=/usr/i686-w64-mingw32/sys-root --with-build-sysroot=/usr/i686-w64-mingw32/sys-root --disable-multilib --disable-win32-registry --enable-languages=c,ada,c++,fortran,lto,objc,obj-c++ --enable-fully-dynamic-string --enable-graphite --enable-libgomp --enable-libquadmath --enable-libquadmath-support --enable-libssp --enable-version-specific-runtime-libs --with-dwarf2 --with-gnu-ld --with-gnu-as --with-tune=generic --with-cloog-include=/usr/include/cloog-isl --with-system-zlib --enable-threads=posix --libexecdir=/usr/lib Modèle de thread: posix gcc version 5.4.0 (GCC) ~~~