Here's the test run. No regressions. BTW, there are some differences between runs. I _think_ this is due to running them in separate days, and having run 'make install' in between, which seems to have made some tests that would normally fail now succeed but that's unrelated to the feature, and in other runs that I've run immediately, those differences don't appear. They started appearing when I ran 'make install', which I suspect had some effect on them, even if it shouldn't (because 'make check' is supposed to not be affected by the system, IMO). Anyway, here it goes.
alx@debian:/srv/alx/src/gnu/gcc/len$ cat /home/alx/tmp/rt alx@debian:/srv/alx/src/gnu/gcc/len$ git log --oneline gnu/master^..len22 c44ef4a2c75 (HEAD -> len, tag: len22, alx/len) c: Add -Wpedantic diagno> 418f81175e7 c: Add <stdcountof.h> 1c983c3baa7 c: Add _Countof operator 90c6ccebd76 (gnu/trunk, gnu/master, gnu/HEAD) RISC-V: Drop riscv_ext_fl> alx@debian:/srv/alx/src/gnu/gcc/len$ git reset gnu/master --h HEAD is now at 90c6ccebd76 RISC-V: Drop riscv_ext_flag_table in favor of riscv_ext_info_t data alx@debian:/srv/alx/src/gnu/gcc/len$ mkdir ../len22 alx@debian:/srv/alx/src/gnu/gcc/len$ cd ../len22 alx@debian:/srv/alx/src/gnu/gcc/len22$ /bin/time ../len/configure --disable-multilib --prefix=/opt/local/gnu/gcc/countof22 |& ts -s | tail -n 3; echo $? 00:00:01 config.status: creating Makefile 00:00:01 1.59user 0.57system 0:01.78elapsed 122%CPU (0avgtext+0avgdata 26812maxresident)k 00:00:01 0inputs+8056outputs (0major+280314minor)pagefaults 0swaps 0 alx@debian:/srv/alx/src/gnu/gcc/len22$ /bin/time make -j12 bootstrap |& ts -s | tail -n 3; echo $? 00:32:17 make[1]: Leaving directory '/srv/alx/src/gnu/gcc/len22' 00:32:17 16769.95user 436.07system 32:16.93elapsed 888%CPU (0avgtext+0avgdata 1491560maxresident)k 00:32:17 0inputs+31383912outputs (856major+112120780minor)pagefaults 0swaps 0 alx@debian:/srv/alx/src/gnu/gcc/len22$ /bin/time make check |& ts -s | tail -n 3; echo $? 07:30:54 make[1]: Leaving directory '/srv/alx/src/gnu/gcc/len22' 07:30:54 23876.26user 3393.05system 7:30:54elapsed 100%CPU (0avgtext+0avgdata 1041556maxresident)k 07:30:54 700720inputs+21152256outputs (2963major+1060028942minor)pagefaults 0swaps 0 alx@debian:/srv/alx/src/gnu/gcc/len22$ cd ../len alx@debian:/srv/alx/src/gnu/gcc/len$ git merge --ff-only len22 Updating 90c6ccebd76..c44ef4a2c75 Fast-forward gcc/Makefile.in | 1 + gcc/c-family/c-common.cc | 26 ++++ gcc/c-family/c-common.def | 3 + gcc/c-family/c-common.h | 2 + gcc/c/c-decl.cc | 22 +++- gcc/c/c-parser.cc | 63 +++++++-- gcc/c/c-tree.h | 4 + gcc/c/c-typeck.cc | 115 +++++++++++++++- gcc/doc/extend.texi | 30 +++++ gcc/ginclude/stdcountof.h | 31 +++++ gcc/testsuite/gcc.dg/countof-compat.c | 8 ++ gcc/testsuite/gcc.dg/countof-compile.c | 124 ++++++++++++++++++ gcc/testsuite/gcc.dg/countof-no-compat.c | 5 + .../gcc.dg/countof-pedantic-errors.c | 8 ++ gcc/testsuite/gcc.dg/countof-pedantic.c | 8 ++ gcc/testsuite/gcc.dg/countof-stdcountof.c | 25 ++++ gcc/testsuite/gcc.dg/countof-vla.c | 35 +++++ gcc/testsuite/gcc.dg/countof-vmt.c | 21 +++ gcc/testsuite/gcc.dg/countof-zero-compile.c | 38 ++++++ gcc/testsuite/gcc.dg/countof-zero.c | 32 +++++ gcc/testsuite/gcc.dg/countof.c | 121 +++++++++++++++++ 21 files changed, 698 insertions(+), 24 deletions(-) create mode 100644 gcc/ginclude/stdcountof.h create mode 100644 gcc/testsuite/gcc.dg/countof-compat.c create mode 100644 gcc/testsuite/gcc.dg/countof-compile.c create mode 100644 gcc/testsuite/gcc.dg/countof-no-compat.c create mode 100644 gcc/testsuite/gcc.dg/countof-pedantic-errors.c create mode 100644 gcc/testsuite/gcc.dg/countof-pedantic.c create mode 100644 gcc/testsuite/gcc.dg/countof-stdcountof.c create mode 100644 gcc/testsuite/gcc.dg/countof-vla.c create mode 100644 gcc/testsuite/gcc.dg/countof-vmt.c create mode 100644 gcc/testsuite/gcc.dg/countof-zero-compile.c create mode 100644 gcc/testsuite/gcc.dg/countof-zero.c create mode 100644 gcc/testsuite/gcc.dg/countof.c alx@debian:/srv/alx/src/gnu/gcc/len$ cd .. alx@debian:/srv/alx/src/gnu/gcc$ mv len22/ len22_b4 alx@debian:/srv/alx/src/gnu/gcc$ mkdir len22 alx@debian:/srv/alx/src/gnu/gcc$ cd len22 alx@debian:/srv/alx/src/gnu/gcc/len22$ /bin/time ../len/configure --disable-multilib --prefix=/opt/local/gnu/gcc/countof22 |& ts -s | tail -n 3; echo $? 00:00:01 config.status: creating Makefile 00:00:01 1.51user 0.56system 0:01.71elapsed 120%CPU (0avgtext+0avgdata 26792maxresident)k 00:00:01 0inputs+8056outputs (0major+278567minor)pagefaults 0swaps 0 alx@debian:/srv/alx/src/gnu/gcc/len22$ /bin/time make -j12 bootstrap |& ts -s | tail -n 3; echo $? 00:31:34 make[1]: Leaving directory '/srv/alx/src/gnu/gcc/len22' 00:31:34 17016.93user 422.52system 31:34.56elapsed 920%CPU (0avgtext+0avgdata 1491208maxresident)k 00:31:34 0inputs+31416288outputs (567major+112073730minor)pagefaults 0swaps 0 alx@debian:/srv/alx/src/gnu/gcc/len22$ /bin/time make check |& ts -s | tail -n 3; echo $? 06:45:55 make[1]: Leaving directory '/srv/alx/src/gnu/gcc/len22' 06:45:55 21372.00user 3206.73system 6:45:54elapsed 100%CPU (0avgtext+0avgdata 1041984maxresident)k 06:45:55 2373464inputs+21171544outputs (8250major+1061062398minor)pagefaults 0swaps 0 alx@debian:~/src/gnu/gcc/len22$ find -type f | grep '\.sum$' | while read f; do diff -u ../len22_b4/$f <(cat $f | sed s,/home/,/srv/,); done --- ../len22_b4/./gcc/testsuite/objc/objc.sum 2025-05-13 14:22:51.748236998 +0200 +++ /dev/fd/63 2025-05-16 00:28:55.103842979 +0200 @@ -1,4 +1,4 @@ -Test run by alx on Tue May 13 14:22:02 2025 +Test run by alx on Thu May 15 20:13:12 2025 Native configuration is x86_64-pc-linux-gnu === objc tests === --- ../len22_b4/./gcc/testsuite/g++/g++.sum 2025-05-13 13:50:08.360564526 +0200 +++ /dev/fd/63 2025-05-16 00:28:55.107842984 +0200 @@ -1,4 +1,4 @@ -Test run by alx on Tue May 13 13:01:57 2025 +Test run by alx on Thu May 15 18:51:11 2025 Native configuration is x86_64-pc-linux-gnu === g++ tests === @@ -145913,9 +145913,27 @@ PASS: g++.dg/warn/uninit-pr82800.C -std=gnu++17 (test for excess errors) PASS: g++.dg/warn/uninit-pr82800.C -std=gnu++26 (test for bogus messages, line 14) PASS: g++.dg/warn/uninit-pr82800.C -std=gnu++26 (test for excess errors) -UNSUPPORTED: g++.dg/warn/uninit-pr93100.C -std=gnu++17 -UNSUPPORTED: g++.dg/warn/uninit-pr93100.C -std=gnu++98 -UNSUPPORTED: g++.dg/warn/uninit-pr93100.C -std=gnu++26 +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++17 (test for warnings, line 13) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++17 (test for warnings, line 20) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++17 (test for warnings, line 31) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++17 (test for warnings, line 38) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++17 (test for warnings, line 49) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++17 (test for warnings, line 56) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++17 (test for excess errors) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++98 (test for warnings, line 13) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++98 (test for warnings, line 20) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++98 (test for warnings, line 31) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++98 (test for warnings, line 38) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++98 (test for warnings, line 49) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++98 (test for warnings, line 56) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++98 (test for excess errors) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++26 (test for warnings, line 13) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++26 (test for warnings, line 20) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++26 (test for warnings, line 31) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++26 (test for warnings, line 38) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++26 (test for warnings, line 49) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++26 (test for warnings, line 56) +PASS: g++.dg/warn/uninit-pr93100.C -std=gnu++26 (test for excess errors) PASS: g++.dg/warn/unit-1.C -std=gnu++17 (test for warnings, line 8) PASS: g++.dg/warn/unit-1.C -std=gnu++17 (test for excess errors) PASS: g++.dg/warn/unit-1.C -std=gnu++98 (test for warnings, line 8) @@ -253049,10 +253067,10 @@ === g++ Summary === -# of expected passes 248638 +# of expected passes 248659 # of unexpected failures 10 # of unexpected successes 3 # of expected failures 2294 -# of unsupported tests 2033 +# of unsupported tests 2030 /srv/alx/src/gnu/gcc/len22/gcc/xg++ version 16.0.0 20250513 (experimental) (GCC) --- ../len22_b4/./gcc/testsuite/gcc/gcc.sum 2025-05-13 13:01:57.374979956 +0200 +++ /dev/fd/63 2025-05-16 00:28:55.195843098 +0200 @@ -1,4 +1,4 @@ -Test run by alx on Tue May 13 11:20:06 2025 +Test run by alx on Thu May 15 17:21:01 2025 Native configuration is x86_64-pc-linux-gnu === gcc tests === @@ -81360,6 +81360,43 @@ PASS: gcc.dg/conv-2.c (test for excess errors) PASS: gcc.dg/conv-3.c (test for excess errors) PASS: gcc.dg/conv-3.c execution test +PASS: gcc.dg/countof-compat.c (test for warnings, line 8) +PASS: gcc.dg/countof-compat.c (test for excess errors) +PASS: gcc.dg/countof-compile.c (test for errors, line 23) +PASS: gcc.dg/countof-compile.c (test for errors, line 27) +PASS: gcc.dg/countof-compile.c (test for errors, line 38) +PASS: gcc.dg/countof-compile.c (test for errors, line 46) +PASS: gcc.dg/countof-compile.c (test for errors, line 64) +PASS: gcc.dg/countof-compile.c (test for errors, line 67) +PASS: gcc.dg/countof-compile.c (test for errors, line 70) +PASS: gcc.dg/countof-compile.c (test for errors, line 82) +PASS: gcc.dg/countof-compile.c (test for errors, line 83) +PASS: gcc.dg/countof-compile.c (test for errors, line 84) +PASS: gcc.dg/countof-compile.c (test for errors, line 85) +PASS: gcc.dg/countof-compile.c (test for errors, line 86) +PASS: gcc.dg/countof-compile.c (test for errors, line 87) +PASS: gcc.dg/countof-compile.c (test for errors, line 88) +PASS: gcc.dg/countof-compile.c (test for errors, line 89) +PASS: gcc.dg/countof-compile.c (test for errors, line 90) +PASS: gcc.dg/countof-compile.c (test for errors, line 94) +PASS: gcc.dg/countof-compile.c (test for errors, line 114) +PASS: gcc.dg/countof-compile.c (test for errors, line 123) +PASS: gcc.dg/countof-compile.c (test for excess errors) +PASS: gcc.dg/countof-no-compat.c (test for excess errors) +PASS: gcc.dg/countof-pedantic-errors.c (test for errors, line 8) +PASS: gcc.dg/countof-pedantic-errors.c (test for excess errors) +PASS: gcc.dg/countof-pedantic.c (test for warnings, line 8) +PASS: gcc.dg/countof-pedantic.c (test for excess errors) +PASS: gcc.dg/countof-stdcountof.c (test for excess errors) +PASS: gcc.dg/countof-stdcountof.c execution test +PASS: gcc.dg/countof-vla.c (test for excess errors) +PASS: gcc.dg/countof-vmt.c (test for excess errors) +PASS: gcc.dg/countof-vmt.c execution test +PASS: gcc.dg/countof-zero-compile.c (test for excess errors) +PASS: gcc.dg/countof-zero.c (test for excess errors) +PASS: gcc.dg/countof-zero.c execution test +PASS: gcc.dg/countof.c (test for excess errors) +PASS: gcc.dg/countof.c execution test PASS: gcc.dg/cr-decimal-dig-1.c (test for excess errors) PASS: gcc.dg/cr-decimal-dig-2.c (test for excess errors) PASS: gcc.dg/cr-decimal-dig-3.c (test for excess errors) @@ -91957,7 +91994,7 @@ PASS: gcc.dg/pr91195.c (test for bogus messages, line 14) PASS: gcc.dg/pr91195.c (test for excess errors) PASS: gcc.dg/pr91269.c (test for excess errors) -UNSUPPORTED: gcc.dg/pr91441.c +PASS: gcc.dg/pr91441.c (test for excess errors) PASS: gcc.dg/pr91570.c (test for excess errors) PASS: gcc.dg/pr91720.c (test for excess errors) PASS: gcc.dg/pr91720.c execution test @@ -92166,10 +92203,10 @@ PASS: gcc.dg/pr96239.c scan-tree-dump-times optimized " r>> 8;" 1 PASS: gcc.dg/pr96239.c scan-tree-dump-times optimized " = __builtin_bswap64 " 1 PASS: gcc.dg/pr96239.c scan-tree-dump-not optimized " >> (8|16|24|32|40|48|56);" -UNSUPPORTED: gcc.dg/pr96260.c +PASS: gcc.dg/pr96260.c (test for excess errors) PASS: gcc.dg/pr96298.c (test for excess errors) PASS: gcc.dg/pr96298.c execution test -UNSUPPORTED: gcc.dg/pr96307.c +PASS: gcc.dg/pr96307.c (test for excess errors) PASS: gcc.dg/pr96335.c (test for excess errors) PASS: gcc.dg/pr96370.c (test for excess errors) PASS: gcc.dg/pr96377-1.c at line 2 (test for warnings, line ) @@ -96504,7 +96541,13 @@ PASS: gcc.dg/uninit-pr90394-1-gimple.c (test for warnings, line 9) PASS: gcc.dg/uninit-pr90394-1-gimple.c (test for excess errors) PASS: gcc.dg/uninit-pr90394.c (test for excess errors) -UNSUPPORTED: gcc.dg/uninit-pr93100.c +PASS: gcc.dg/uninit-pr93100.c (test for warnings, line 16) +PASS: gcc.dg/uninit-pr93100.c (test for warnings, line 26) +PASS: gcc.dg/uninit-pr93100.c (test for warnings, line 38) +PASS: gcc.dg/uninit-pr93100.c (test for warnings, line 48) +PASS: gcc.dg/uninit-pr93100.c (test for warnings, line 61) +PASS: gcc.dg/uninit-pr93100.c (test for warnings, line 71) +PASS: gcc.dg/uninit-pr93100.c (test for excess errors) PASS: gcc.dg/uninit-pr95136.c (test for warnings, line 10) PASS: gcc.dg/uninit-pr95136.c (test for warnings, line 12) PASS: gcc.dg/uninit-pr95136.c (test for warnings, line 17) @@ -98880,11 +98923,11 @@ PASS: c-c++-common/Wbidi-chars-ranges.c -Wc++-compat at line 23 (test for warnings, line 22) PASS: c-c++-common/Wbidi-chars-ranges.c -Wc++-compat at line 39 (test for warnings, line 38) PASS: c-c++-common/Wbidi-chars-ranges.c -Wc++-compat at line 48 (test for warnings, line 47) -FAIL: c-c++-common/Wbidi-chars-ranges.c -Wc++-compat expected multiline pattern lines 13-17 +PASS: c-c++-common/Wbidi-chars-ranges.c -Wc++-compat expected multiline pattern lines 13-17 PASS: c-c++-common/Wbidi-chars-ranges.c -Wc++-compat expected multiline pattern lines 26-31 PASS: c-c++-common/Wbidi-chars-ranges.c -Wc++-compat expected multiline pattern lines 42-43 PASS: c-c++-common/Wbidi-chars-ranges.c -Wc++-compat expected multiline pattern lines 51-52 -FAIL: c-c++-common/Wbidi-chars-ranges.c -Wc++-compat (test for excess errors) +PASS: c-c++-common/Wbidi-chars-ranges.c -Wc++-compat (test for excess errors) PASS: c-c++-common/Wbool-compare-1.c -Wc++-compat (test for warnings, line 19) PASS: c-c++-common/Wbool-compare-1.c -Wc++-compat (test for warnings, line 20) PASS: c-c++-common/Wbool-compare-1.c -Wc++-compat (test for warnings, line 21) @@ -216929,10 +216972,10 @@ === gcc Summary === -# of expected passes 211519 -# of unexpected failures 9 +# of expected passes 211568 +# of unexpected failures 7 # of unexpected successes 2 # of expected failures 1479 -# of unsupported tests 3731 +# of unsupported tests 3727 /srv/alx/src/gnu/gcc/len22/gcc/xgcc version 16.0.0 20250513 (experimental) (GCC) --- ../len22_b4/./gcc/testsuite/gfortran/gfortran.sum 2025-05-13 14:22:02.185557817 +0200 +++ /dev/fd/63 2025-05-16 00:28:55.267843192 +0200 @@ -1,4 +1,4 @@ -Test run by alx on Tue May 13 13:50:08 2025 +Test run by alx on Thu May 15 19:40:50 2025 Native configuration is x86_64-pc-linux-gnu === gfortran tests === --- ../len22_b4/./x86_64-pc-linux-gnu/libstdc++-v3/testsuite/libstdc++.sum 2025-05-13 18:36:46.021382946 +0200 +++ /dev/fd/63 2025-05-16 00:28:55.283843213 +0200 @@ -1,4 +1,4 @@ -Test run by alx on Tue May 13 14:23:14 2025 +Test run by alx on Thu May 15 20:14:26 2025 Native configuration is x86_64-pc-linux-gnu === libstdc++ tests === @@ -14391,8 +14391,10 @@ PASS: 29_atomics/atomic_float/1.cc -std=gnu++26 execution test PASS: 29_atomics/atomic_float/95282.cc -std=gnu++20 (test for excess errors) PASS: 29_atomics/atomic_float/95282.cc -std=gnu++26 (test for excess errors) -UNSUPPORTED: 29_atomics/atomic_float/compare_exchange_padding.cc -std=gnu++20 -UNSUPPORTED: 29_atomics/atomic_float/compare_exchange_padding.cc -std=gnu++26 +PASS: 29_atomics/atomic_float/compare_exchange_padding.cc -std=gnu++20 (test for excess errors) +PASS: 29_atomics/atomic_float/compare_exchange_padding.cc -std=gnu++20 execution test +PASS: 29_atomics/atomic_float/compare_exchange_padding.cc -std=gnu++26 (test for excess errors) +PASS: 29_atomics/atomic_float/compare_exchange_padding.cc -std=gnu++26 execution test PASS: 29_atomics/atomic_float/constinit.cc -std=gnu++20 (test for excess errors) PASS: 29_atomics/atomic_float/constinit.cc -std=gnu++26 (test for excess errors) PASS: 29_atomics/atomic_float/requirements.cc -std=gnu++20 (test for excess errors) @@ -19286,6 +19288,6 @@ === libstdc++ Summary === -# of expected passes 18342 +# of expected passes 18346 # of expected failures 131 -# of unsupported tests 799 +# of unsupported tests 797 --- ../len22_b4/./x86_64-pc-linux-gnu/libitm/testsuite/libitm.sum 2025-05-13 18:50:56.432974329 +0200 +++ /dev/fd/63 2025-05-16 00:28:55.291843222 +0200 @@ -1,4 +1,4 @@ -Test run by alx on Tue May 13 18:50:54 2025 +Test run by alx on Fri May 16 00:06:49 2025 Native configuration is x86_64-pc-linux-gnu === libitm tests === --- ../len22_b4/./x86_64-pc-linux-gnu/libgomp/testsuite/libgomp.sum 2025-05-13 18:50:54.376984988 +0200 +++ /dev/fd/63 2025-05-16 00:28:55.295843228 +0200 @@ -1,4 +1,4 @@ -Test run by alx on Tue May 13 18:37:03 2025 +Test run by alx on Thu May 15 23:52:30 2025 Native configuration is x86_64-pc-linux-gnu === libgomp tests === --- ../len22_b4/./x86_64-pc-linux-gnu/libatomic/testsuite/libatomic.sum 2025-05-13 18:50:57.936966534 +0200 +++ /dev/fd/63 2025-05-16 00:28:55.307843245 +0200 @@ -1,4 +1,4 @@ -Test run by alx on Tue May 13 18:50:56 2025 +Test run by alx on Fri May 16 00:06:51 2025 Native configuration is x86_64-pc-linux-gnu === libatomic tests === -- <https://www.alejandro-colomar.es/>
signature.asc
Description: PGP signature