I checked http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16104 which is for gcc.c-torture/execute/20050316-1.c and this is not related.
In this test optimization levels "-O0", "-O1" and "-O2" are broken, levels "-O3" and "-Os" are OK. I am using rtl and rtlflag checking. # gcc/xgcc -v Using built-in specs. Target: i686-pc-linux-gnu Configured with: /root/downloads/gcc-4_3-trunk/configure --verbose --enable-languages=c,ada,c++,fortran,java,objc,obj-c++ --prefix=/usr --enable-objc-gc --enable-concept-checks --disable-multilib --with-gxx-include-dir=/usr/include/c++/4.3 --enable-libstdcxx-debug --enable-static --enable-shared --enable-initfini-array --enable-__cxa_atexit --enable-threads=posix --enable-version-specific-runtime-libs --enable-libssp --enable-libmudflap --enable-libgomp --disable-werror --enable-nls --with-included-gettext --enable-decimal-float --enable-debug --enable-java-gc=boehm --with-x --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib --enable-java-awt=gtk,xlib --enable-gtk-cairo --enable-qt-peer --enable-xmlj --enable-gconf-peer --enable-tool-wrappers --enable-portable-native-sync --enable-examples --with-stabs --enable-hash-synchronization --enable-gc-debug --enable-interpreter --with-system-zlib --enable-libada --with-tls --with-tune=athlon-xp --with-cpu=athlon-xp --with-arch=athlon-xp --enable-stage1-checking=assert,fold,gc,misc,rtl,rtlflag,runtime,tree : (reconfigured) /root/downloads/gcc-4_3-trunk/configure --verbose --enable-languages=c,ada,c++,fortran,java,objc,obj-c++ --prefix=/usr --enable-objc-gc --enable-concept-checks --disable-multilib --with-gxx-include-dir=/usr/include/c++/4.3 --enable-libstdcxx-debug --enable-static --enable-shared --enable-initfini-array --enable-__cxa_atexit --enable-threads=posix --enable-version-specific-runtime-libs --enable-libssp --enable-libmudflap --enable-libgomp --disable-werror --enable-nls --with-included-gettext --enable-decimal-float --enable-debug --enable-java-gc=boehm --with-x --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib --enable-java-awt=gtk,xlib --enable-gtk-cairo --enable-qt-peer --enable-xmlj --enable-gconf-peer --enable-tool-wrappers --enable-portable-native-sync --enable-examples --with-stabs --enable-hash-synchronization --enable-gc-debug --enable-interpreter --with-system-zlib --enable-libada --with-tls --with-tune=athlon-xp --with-cpu=athlon-xp --with-arch=athlon-xp --enable-stage1-checking=assert,gc,misc,rtl,rtlflag,runtime,tree Thread model: posix gcc version 4.3.0 20070607 (experimental) Here is part of my log file: Executing on host: /opt/gcc-4_3-build-2/gcc/xgcc -B/opt/gcc-4_3-build-2/gcc/ /root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.c-torture/execute/20050316-2.c -w -O0 -fno-show-column -lm -o /opt/gcc-4_3-build-2/gcc/testsuite/gcc/20050316-2.x0 (timeout = 300) PASS: gcc.c-torture/execute/20050316-2.c compilation, -O0 Setting LD_LIBRARY_PATH to :/opt/gcc-4_3-build-2/gcc::/opt/gcc-4_3-build-2/gcc:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libstdc++-v3/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libmudflap/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libssp/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libgomp/.libs:/opt/gcc-4_3-build-2/./gcc:/opt/gcc-4_3-build-2/./prev-gcc FAIL: gcc.c-torture/execute/20050316-2.c execution, -O0 Executing on host: /opt/gcc-4_3-build-2/gcc/xgcc -B/opt/gcc-4_3-build-2/gcc/ /root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.c-torture/execute/20050316-2.c -w -O1 -fno-show-column -lm -o /opt/gcc-4_3-build-2/gcc/testsuite/gcc/20050316-2.x1 (timeout = 300) PASS: gcc.c-torture/execute/20050316-2.c compilation, -O1 Setting LD_LIBRARY_PATH to :/opt/gcc-4_3-build-2/gcc::/opt/gcc-4_3-build-2/gcc:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libstdc++-v3/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libmudflap/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libssp/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libgomp/.libs:/opt/gcc-4_3-build-2/./gcc:/opt/gcc-4_3-build-2/./prev-gcc FAIL: gcc.c-torture/execute/20050316-2.c execution, -O1 Executing on host: /opt/gcc-4_3-build-2/gcc/xgcc -B/opt/gcc-4_3-build-2/gcc/ /root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.c-torture/execute/20050316-2.c -w -O2 -fno-show-column -lm -o /opt/gcc-4_3-build-2/gcc/testsuite/gcc/20050316-2.x2 (timeout = 300) PASS: gcc.c-torture/execute/20050316-2.c compilation, -O2 Setting LD_LIBRARY_PATH to :/opt/gcc-4_3-build-2/gcc::/opt/gcc-4_3-build-2/gcc:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libstdc++-v3/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libmudflap/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libssp/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libgomp/.libs:/opt/gcc-4_3-build-2/./gcc:/opt/gcc-4_3-build-2/./prev-gcc FAIL: gcc.c-torture/execute/20050316-2.c execution, -O2 Executing on host: /opt/gcc-4_3-build-2/gcc/xgcc -B/opt/gcc-4_3-build-2/gcc/ /root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.c-torture/execute/20050316-2.c -w -O3 -fomit-frame-pointer -fno-show-column -lm -o /opt/gcc-4_3-build-2/gcc/testsuite/gcc/20050316-2.x3 (timeout = 300) PASS: gcc.c-torture/execute/20050316-2.c compilation, -O3 -fomit-frame-pointer Setting LD_LIBRARY_PATH to :/opt/gcc-4_3-build-2/gcc::/opt/gcc-4_3-build-2/gcc:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libstdc++-v3/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libmudflap/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libssp/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libgomp/.libs:/opt/gcc-4_3-build-2/./gcc:/opt/gcc-4_3-build-2/./prev-gcc PASS: gcc.c-torture/execute/20050316-2.c execution, -O3 -fomit-frame-pointer Executing on host: /opt/gcc-4_3-build-2/gcc/xgcc -B/opt/gcc-4_3-build-2/gcc/ /root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.c-torture/execute/20050316-2.c -w -O3 -g -fno-show-column -lm -o /opt/gcc-4_3-build-2/gcc/testsuite/gcc/20050316-2.x4 (timeout = 300) PASS: gcc.c-torture/execute/20050316-2.c compilation, -O3 -g Setting LD_LIBRARY_PATH to :/opt/gcc-4_3-build-2/gcc::/opt/gcc-4_3-build-2/gcc:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libstdc++-v3/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libmudflap/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libssp/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libgomp/.libs:/opt/gcc-4_3-build-2/./gcc:/opt/gcc-4_3-build-2/./prev-gcc PASS: gcc.c-torture/execute/20050316-2.c execution, -O3 -g Executing on host: /opt/gcc-4_3-build-2/gcc/xgcc -B/opt/gcc-4_3-build-2/gcc/ /root/downloads/gcc-4_3-trunk/gcc/testsuite/gcc.c-torture/execute/20050316-2.c -w -Os -fno-show-column -lm -o /opt/gcc-4_3-build-2/gcc/testsuite/gcc/20050316-2.x5 (timeout = 300) PASS: gcc.c-torture/execute/20050316-2.c compilation, -Os Setting LD_LIBRARY_PATH to :/opt/gcc-4_3-build-2/gcc::/opt/gcc-4_3-build-2/gcc:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libstdc++-v3/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libmudflap/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libssp/.libs:/opt/gcc-4_3-build-2/i686-pc-linux-gnu/libgomp/.libs:/opt/gcc-4_3-build-2/./gcc:/opt/gcc-4_3-build-2/./prev-gcc PASS: gcc.c-torture/execute/20050316-2.c execution, -Os I altered the "main()" of 20050316-2.c to include some printf statements: main (void) { if (sizeof (short) != 2 || sizeof (int) != 4 || sizeof (long long) != 8) return 0; V2SF x = { 2.0, 2.0 }; union { long long l; float f[2]; int i[2]; } u; u.l = test1 (x); printf("test1 - 2.0 - u.f[0] = %10.10f u.f[1] = %10.10f \n", u.f[0], u.f[1]); if (u.f[0] != 2.0 || u.f[1] != 2.0) abort (); V2SF y = { 6.0, 6.0 }; u.l = test2 (y); printf("test2 - 6.0 - u.f[0] = %10.10f u.f[1] = %10.10f \n", u.f[0], u.f[1]); if (u.f[0] != 6.0 || u.f[1] != 6.0) abort (); V2SI z = { 4, 4 }; u.l = test3 (z); printf("test3 - 4 - u.i[0] = %u u.i[1] = %u \n", u.i[0], u.i[1]); if (u.i[0] != 4 || u.i[1] != 4) abort (); return 0; } I compiled the tests with the same options as the testsuite used and ran them: # ./20050316-2.x0 test1 - 2.0 - u.f[0] = nan u.f[1] = nan test2 - 6.0 - u.f[0] = nan u.f[1] = nan test3 - 4 - u.i[0] = 4 u.i[1] = 4 # ./20050316-2.x1 test1 - 2.0 - u.f[0] = 2.0000000000 u.f[1] = nan Aborted # ./20050316-2.x2 test1 - 2.0 - u.f[0] = 2.0000000000 u.f[1] = nan Aborted # ./20050316-2.x3 test1 - 2.0 - u.f[0] = 2.0000000000 u.f[1] = 2.0000000000 test2 - 6.0 - u.f[0] = 6.0000000000 u.f[1] = 6.0000000000 test3 - 4 - u.i[0] = 4 u.i[1] = 4 # ./20050316-2.x4 test1 - 2.0 - u.f[0] = 2.0000000000 u.f[1] = 2.0000000000 test2 - 6.0 - u.f[0] = 6.0000000000 u.f[1] = 6.0000000000 test3 - 4 - u.i[0] = 4 u.i[1] = 4 # ./20050316-2.x5 test1 - 2.0 - u.f[0] = 2.0000000000 u.f[1] = 2.0000000000 test2 - 6.0 - u.f[0] = 6.0000000000 u.f[1] = 6.0000000000 test3 - 4 - u.i[0] = 4 u.i[1] = 4 Here are just the PASS/FAIL lines (for execution only) from the log: FAIL: gcc.c-torture/execute/20050316-2.c execution, -O0 FAIL: gcc.c-torture/execute/20050316-2.c execution, -O1 FAIL: gcc.c-torture/execute/20050316-2.c execution, -O2 PASS: gcc.c-torture/execute/20050316-2.c execution, -O3 -fomit-frame-pointer PASS: gcc.c-torture/execute/20050316-2.c execution, -O3 -g PASS: gcc.c-torture/execute/20050316-2.c execution, -Os I noticed this: 0): Test ./20050316-2.x0 did not abort, though it did fail. "nan" not compared properly? 1): Test ./20050316-2.x1 did abort and fail - which seems proper (considering the result). 2): Test ./20050316-2.x2 did abort and fail - which seems proper - "nan" compared properly. 3): Test ./20050316-2.x3 did not abort, and it passed - OK 4): Test ./20050316-2.x4 did not abort, and it passed - OK 5): Test ./20050316-2.x5 did not abort, and it passed - OK The testsuite operated correctly in all the cases. GCC did not compile correctly in cases "0", "1" and "2". In case "0" the GCC program ought to have aborted since the statements: "if (u.f[0] != 2.0 || u.f[1] != 2.0) abort ();" _and_ "if (u.f[0] != 6.0 || u.f[1] != 6.0) abort ();" _and_ "if (u.i[0] != 4 || u.i[1] != 4 ) abort ();" work out as: "if (nan != 2.0 || nan != 2.0) abort ();" _and_ "if (nan != 6.0 || nan != 6.0) abort ();" _and_ "if (4 != 4 || 4 != 4 ) abort ();" In cases "1" and "2", "u.f[1]" was equal to "nan" instead of 2.0 . -- Summary: GCC 4.3.0 20070607 - FAIL: gcc.c- torture/execute/20050316-2.c execution Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rob1weld at aol dot com GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32259