Hi again,

for reference the testsuite results for gcc-16-20251214 are on [1]:

[1]: https://gcc.gnu.org/pipermail/gcc-testresults/2025-December/865397.html

...the results for GCC 15.1.0 are on [2]:

[2]: https://gcc.gnu.org/pipermail/gcc-testresults/2025-August/855566.html

## LTO ##

First I'd like to point you to some issues regarding LTO during the
testsuite run. The bootstrap was configured w/o LTO:

```
configure flags: --prefix=/usr --libdir=/usr/lib --mandir=/usr/man 
--infodir=/usr/info --enable-shared --enable-bootstrap --enable-languages=c,c++ 
--enable-threads=posix --enable-checking=release --with-system-zlib 
--enable-libstdcxx-dual-abi --with-default-libstdcxx-abi=new 
--disable-libstdcxx-pch --disable-libunwind-exceptions --enable-__cxa_atexit 
--disable-libssp --enable-gnu-indirect-function --enable-gnu-unique-object 
--enable-plugin --disable-lto --disable-install-libiberty --disable-werror 
--with-gnu-ld --with-isl --verbose --with-arch-directory=ia64 --disable-gtktest 
--enable-clocale=gnu --disable-multilib --target=ia64-t2-linux-gnu 
--build=ia64-t2-linux-gnu --host=ia64-t2-linux-gnu
```

...but looking into the testsuite log, (some) LTO tests are still done:

```
[...]
/dev/shm/gcc-16-20251214/gcc.build.lnx/./prev-gcc/xgcc 
-B/dev/shm/gcc-16-20251214/gcc.build.lnx/./prev-gcc/ 
-B/usr/ia64-t2-linux-gnu/bin/ -B/usr/ia64-t2-linux-gnu/bin/ 
-B/usr/ia64-t2-linux-gnu/lib/ -isystem /usr/ia64-t2-linux-gnu/include -isystem 
/usr/ia64-t2-linux-gnu/sys-include    -DHAVE_CONFIG_H -I. -I../../libbacktrace  
-I ../../libbacktrace/../include -I ../../libbacktrace/../libgcc -I ../libgcc  
-funwind-tables -frandom-seed=btest_lto-btest.o -W -Wall -Wwrite-strings 
-Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition 
-Wmissing-format-attribute -Wcast-qual -Wno-attributes -Wpointer-arith -g -O 
-flto -g -O2     -c -o btest_lto-btest.o `test -f 'btest.c' || echo 
'../../libbacktrace/'`btest.c
cc1: error: LTO support has not been enabled in this configuration
make[3]: *** [Makefile:1604: btest_lto-btest.o] Error 1
/dev/shm/gcc-16-20251214/gcc.build.lnx/./prev-gcc/xgcc 
-B/dev/shm/gcc-16-20251214/gcc.build.lnx/./prev-gcc/ 
-B/usr/ia64-t2-linux-gnu/bin/ -B/usr/ia64-t2-linux-gnu/bin/ 
-B/usr/ia64-t2-linux-gnu/lib/ -isystem /usr/ia64-t2-linux-gnu/include -isystem 
/usr/ia64-t2-linux-gnu/sys-include    -DHAVE_CONFIG_H -I. -I../../libbacktrace  
-I ../../libbacktrace/../include -I ../../libbacktrace/../libgcc -I ../libgcc  
-funwind-tables -frandom-seed=btest_lto-testlib.o -W -Wall -Wwrite-strings 
-Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition 
-Wmissing-format-attribute -Wcast-qual -Wno-attributes -Wpointer-arith -g -O 
-flto -g -O2     -c -o btest_lto-testlib.o `test -f 'testlib.c' || echo 
'../../libbacktrace/'`testlib.c
cc1: error: LTO support has not been enabled in this configuration
make[3]: *** [Makefile:1610: btest_lto-testlib.o] Error 1
[...]
make[3]: Target 'btest_lto' not remade because of errors.
[...]
```

Fortunately this was ignored during the testsuite run, so it kept going
despite these errors, though of course these resulted in failing tests:

```
FAIL: c-c++-common/guality/Og-dce-1.c  -Og -flto (test for excess errors)
FAIL: c-c++-common/guality/Og-dce-2.c  -Og -flto (test for excess errors)
[...]
FAIL: c-c++-common/guality/Og-dce-3.c  -Og -flto (test for excess errors)
[...]
FAIL: c-c++-common/guality/Og-global-dse-1.c  -Og -flto (test for excess errors)
[...]
FAIL: c-c++-common/guality/Og-static-wo-1.c  -Og -flto (test for excess errors)
[...]
FAIL: c-c++-common/guality/Og-dce-3.c  -Og -flto (test for excess errors)
[...]
FAIL: c-c++-common/guality/Og-global-dse-1.c  -Og -flto (test for excess errors)
[...]
FAIL: c-c++-common/guality/Og-static-wo-1.c  -Og -flto (test for excess errors)
[...]
FAIL: c-c++-common/guality/Og-dce-1.c  -Og -flto (test for excess errors)
FAIL: c-c++-common/guality/Og-dce-2.c  -Og -flto (test for excess errors)
[...]
```

I wonder, is LTO considered a default? Or should these tests actually
not run for a non-LTO config?


## Other errors ##

There are also other errors present, but comparing to the testsuite log
for GCC 15.2.0 (I don't have one for GCC 15.1.0 thanks to a typo :-()
these are not new for gcc-16-20251214:

```
# ( date; time make -k -j9 check 2>&1; echo $?; date ) 2>&1 | tee <LOGFILE>
[...]
make[2]: Entering directory '/dev/shm/gcc-16-20251214/gcc.build.lnx/fixincludes'
autogen -T ../../fixincludes/check.tpl ../../fixincludes/inclhack.def
make[2]: Entering directory '/dev/shm/gcc-16-20251214/gcc.build.lnx/gcc'
make[2]: autogen: No such file or directory
make[2]: *** [Makefile:180: check] Error 127
make[2]: Leaving directory '/dev/shm/gcc-16-20251214/gcc.build.lnx/fixincludes'
[...]
make[1]: *** [Makefile:4215: check-fixincludes] Error 2
[...]
## here be the lto errors from above
[...]
make[3]: Leaving directory '/dev/shm/gcc-16-20251214/gcc.build.lnx/libbacktrace'
make[2]: *** [Makefile:2519: check-am] Error 2
make[2]: Target 'check' not remade because of errors.
make[2]: Leaving directory '/dev/shm/gcc-16-20251214/gcc.build.lnx/libbacktrace'
make[1]: *** [Makefile:7907: check-libbacktrace] Error 2
[...]
make[1]: Leaving directory '/dev/shm/gcc-16-20251214/gcc.build.lnx'
make: *** [Makefile:2692: do-check] Error 2
make: Target 'check' not remade because of errors.

real    400m57.482s
user    2907m2.725s
sys     156m12.341s
2
[...]
```

## Comparison of testsuite results ##

Last a comparison between GCC 15.1.0 (left) and gcc-16-20251214
(right) results:

```
        === g++ Summary ===

# of expected passes            232298  245668
# of unexpected failures        162     282
# of unexpected successes               3
# of expected failures          2138    2188
# of unresolved testcases       5       5
# of unsupported tests          2228    2221


        === gcc Summary ===

# of expected passes            143723  146675
# of unexpected failures        1064    1161
# of unexpected successes       18      23
# of expected failures          1369    1413
# of unresolved testcases       22      13
# of unsupported tests          3536    3686


        === libatomic Summary ===

# of expected passes            54      54


        === libgomp Summary ===

# of expected passes            5792    6064
# of unexpected failures        3       3
# of expected failures          47      47
# of unsupported tests          405     479


        === libstdc++ Summary ===

# of expected passes            18162   19243
# of unexpected failures        9       245
# of expected failures          131     140
# of unresolved testcases       2
# of unsupported tests          740     786
```

Overall this looks like an improvement to me. Although the number of
unexpected failures for libstdc++ increased dramatically. But the number
of expected passes - where they increased - increased more than the
number of failures.

Cheers,
Frank

Reply via email to