Hi Joseph, On Fri, Oct 11, 2024 at 01:44:36PM GMT, Alejandro Colomar wrote: > Hi, > > This is just an untested draft. If there's rough agreement that this is > wanted, I'll test it, write changelog, etc. > > The intention of this change is to help improve the common C/C++ > language subset, promoting the use of NULL in both languages as the null > pointer constant, expanding to nullptr in C++, and to ((void *)0) in C. > > While C23 added nullptr, it was a terrible mistake, and it doesn't do > any good to the C language. (See the link below for more details.) > Instead, it's C++ which should reconcile with C. Let's work in that > direction. > > Link: <https://software.codidact.com/posts/292718> > > Have a lovely day! > Alex > > Alejandro Colomar (5): > gcc/ginclude/stddef.h: Indent nested cpp conditionals > gcc/ginclude/stddef.h: Invert conditional > gcc/ginclude/stddef.h: Define NULL as nullptr if possible > Don't define NULL as 0 in C > libgm2/libm2pim/wrapc.cc: Define NULL as nullptr > > gcc/ginclude/stddef.h | 24 +++++++++++-------- > .../gcc.c-torture/execute/pr68143_1.c | 2 +- > gcc/testsuite/gcc.c-torture/execute/pr70566.c | 2 +- > gcc/testsuite/gcc.dg/tm/20100615.c | 2 +- > gcc/testsuite/gcc.target/aarch64/pr91927.c | 2 +- > libgm2/libm2pim/wrapc.cc | 4 +--- > libiberty/alloca.c | 2 +- > libiberty/argv.c | 2 +- > libiberty/getopt1.c | 2 +- > 9 files changed, 22 insertions(+), 20 deletions(-)
There are some regressions. Below is the diff of .sum files. In the
.log files, I see some errors saying `CRC mismatch`. Did I do anything
wrong?
Have a lovely night!
Alex
--- ../.tmp.null.b4/./gcc/testsuite/g++/g++.sum 2024-10-13 17:49:00.772692813
+0200
+++ ../.tmp.null/./gcc/testsuite/g++/g++.sum 2024-10-13 20:45:15.537873070
+0200
@@ -1,4 +1,4 @@
-Test run by alx on Sun Oct 13 12:28:13 2024
+Test run by alx on Sun Oct 13 19:41:09 2024
Native configuration is x86_64-pc-linux-gnu
=== g++ tests ===
@@ -192400,8 +192400,7 @@
PASS: g++.dg/modules/p1689-1.C -std=c++2b (test for excess errors)
FAIL: g++.dg/modules/p1689-2.C -std=c++17 (test for excess errors)
FAIL: g++.dg/modules/p1689-2.C -std=c++2a (test for excess errors)
-PASS: g++.dg/modules/p1689-2.C -std=c++2b (test for excess errors)
-FAIL: ERROR: length mismatch at rules/0/requires: actual: "1" expect: "0"
+FAIL: g++.dg/modules/p1689-2.C -std=c++2b (test for excess errors)
PASS: g++.dg/modules/p1689-3.C -std=c++17 (test for excess errors)
PASS: g++.dg/modules/p1689-3.C -std=c++2a (test for excess errors)
PASS: g++.dg/modules/p1689-3.C -std=c++2b (test for excess errors)
@@ -193382,12 +193381,12 @@
PASS: g++.dg/modules/binding-1_b.H module-cmi
(gcm.cache/$srcdir/g++.dg/modules/binding-1_b.H.gcm)
FAIL: g++.dg/modules/binding-1_c.C -std=c++2a (test for excess errors)
FAIL: g++.dg/modules/binding-1_c.C module-cmi hello (gcm.cache/hello.gcm)
-PASS: g++.dg/modules/binding-1_a.H -std=c++2b (test for excess errors)
-PASS: g++.dg/modules/binding-1_a.H module-cmi
(gcm.cache/$srcdir/g++.dg/modules/binding-1_a.H.gcm)
+FAIL: g++.dg/modules/binding-1_a.H -std=c++2b (test for excess errors)
+FAIL: g++.dg/modules/binding-1_a.H module-cmi
(gcm.cache/$srcdir/g++.dg/modules/binding-1_a.H.gcm)
PASS: g++.dg/modules/binding-1_b.H -std=c++2b (test for excess errors)
PASS: g++.dg/modules/binding-1_b.H module-cmi
(gcm.cache/$srcdir/g++.dg/modules/binding-1_b.H.gcm)
-PASS: g++.dg/modules/binding-1_c.C -std=c++2b (test for excess errors)
-PASS: g++.dg/modules/binding-1_c.C module-cmi hello (gcm.cache/hello.gcm)
+FAIL: g++.dg/modules/binding-1_c.C -std=c++2b (test for excess errors)
+FAIL: g++.dg/modules/binding-1_c.C module-cmi hello (gcm.cache/hello.gcm)
PASS: g++.dg/modules/block-decl-1_a.C -std=c++17 (test for bogus messages,
line 7)
PASS: g++.dg/modules/block-decl-1_a.C -std=c++17 (test for excess errors)
PASS: g++.dg/modules/block-decl-1_a.C module-cmi bla (gcm.cache/bla.gcm)
@@ -194824,13 +194823,13 @@
FAIL: g++.dg/modules/global-3_b.C -std=c++2a (test for excess errors)
UNRESOLVED: g++.dg/modules/global-3 -std=c++2a link
UNRESOLVED: g++.dg/modules/global-3 -std=c++2a execute
-PASS: g++.dg/modules/global-3_a.C -std=c++2b (test for excess errors)
-PASS: g++.dg/modules/global-3_a.C -std=c++2b scan-lang-dump module
"Dependencies of decl function_decl:'::Log'"
+FAIL: g++.dg/modules/global-3_a.C -std=c++2b (test for excess errors)
+FAIL: g++.dg/modules/global-3_a.C -std=c++2b scan-lang-dump module
"Dependencies of decl function_decl:'::Log'"
PASS: g++.dg/modules/global-3_a.C -std=c++2b scan-lang-dump-not module
"Reachable GMF '::printf[^'\\n]*' added"
-PASS: g++.dg/modules/global-3_a.C module-cmi logger (gcm.cache/logger.gcm)
-PASS: g++.dg/modules/global-3_b.C -std=c++2b (test for excess errors)
-PASS: g++.dg/modules/global-3 -std=c++2b link
-PASS: g++.dg/modules/global-3 -std=c++2b execute
+FAIL: g++.dg/modules/global-3_a.C module-cmi logger (gcm.cache/logger.gcm)
+FAIL: g++.dg/modules/global-3_b.C -std=c++2b (test for excess errors)
+UNRESOLVED: g++.dg/modules/global-3 -std=c++2b link
+UNRESOLVED: g++.dg/modules/global-3 -std=c++2b execute
PASS: g++.dg/modules/gmf-1_a.C -std=c++17 (test for excess errors)
PASS: g++.dg/modules/gmf-1_a.C module-cmi hello (gcm.cache/hello.gcm)
PASS: g++.dg/modules/gmf-1_b.C -std=c++17 (test for excess errors)
@@ -194946,11 +194945,11 @@
FAIL: g++.dg/modules/hello-1_b.C -std=c++2a (test for excess errors)
UNRESOLVED: g++.dg/modules/hello-1 -std=c++2a link
UNRESOLVED: g++.dg/modules/hello-1 -std=c++2a execute
-PASS: g++.dg/modules/hello-1_a.C -std=c++2b (test for excess errors)
-PASS: g++.dg/modules/hello-1_a.C module-cmi hello (gcm.cache/hello.gcm)
-PASS: g++.dg/modules/hello-1_b.C -std=c++2b (test for excess errors)
-PASS: g++.dg/modules/hello-1 -std=c++2b link
-PASS: g++.dg/modules/hello-1 -std=c++2b execute
+FAIL: g++.dg/modules/hello-1_a.C -std=c++2b (test for excess errors)
+FAIL: g++.dg/modules/hello-1_a.C module-cmi hello (gcm.cache/hello.gcm)
+FAIL: g++.dg/modules/hello-1_b.C -std=c++2b (test for excess errors)
+UNRESOLVED: g++.dg/modules/hello-1 -std=c++2b link
+UNRESOLVED: g++.dg/modules/hello-1 -std=c++2b execute
PASS: g++.dg/modules/hello-2_a.C -std=c++17 (test for excess errors)
PASS: g++.dg/modules/hello-2_a.C module-cmi Hello2 (gcm.cache/Hello2.gcm)
FAIL: g++.dg/modules/hello-2_b.C -std=c++17 (test for excess errors)
@@ -194963,9 +194962,9 @@
UNRESOLVED: g++.dg/modules/hello-2 -std=c++2a execute
PASS: g++.dg/modules/hello-2_a.C -std=c++2b (test for excess errors)
PASS: g++.dg/modules/hello-2_a.C module-cmi Hello2 (gcm.cache/Hello2.gcm)
-PASS: g++.dg/modules/hello-2_b.C -std=c++2b (test for excess errors)
-PASS: g++.dg/modules/hello-2 -std=c++2b link
-PASS: g++.dg/modules/hello-2 -std=c++2b execute
+FAIL: g++.dg/modules/hello-2_b.C -std=c++2b (test for excess errors)
+UNRESOLVED: g++.dg/modules/hello-2 -std=c++2b link
+UNRESOLVED: g++.dg/modules/hello-2 -std=c++2b execute
PASS: g++.dg/modules/horcrux-1_a.C -std=c++17 (test for excess errors)
PASS: g++.dg/modules/horcrux-1_a.C module-cmi foo (gcm.cache/foo.gcm)
PASS: g++.dg/modules/horcrux-1_b.C -std=c++17 (test for excess errors)
@@ -195873,11 +195872,11 @@
FAIL: g++.dg/modules/iostream-1_b.C -std=c++2a (test for excess errors)
UNRESOLVED: g++.dg/modules/iostream-1 -std=c++2a link
UNRESOLVED: g++.dg/modules/iostream-1 -std=c++2a execute
-PASS: g++.dg/modules/iostream-1_a.H -std=c++2b (test for excess errors)
-PASS: g++.dg/modules/iostream-1_a.H module-cmi
(gcm.cache/$srcdir/g++.dg/modules/iostream-1_a.H.gcm)
-PASS: g++.dg/modules/iostream-1_b.C -std=c++2b (test for excess errors)
-PASS: g++.dg/modules/iostream-1 -std=c++2b link
-PASS: g++.dg/modules/iostream-1 -std=c++2b execute
+FAIL: g++.dg/modules/iostream-1_a.H -std=c++2b (test for excess errors)
+FAIL: g++.dg/modules/iostream-1_a.H module-cmi
(gcm.cache/$srcdir/g++.dg/modules/iostream-1_a.H.gcm)
+FAIL: g++.dg/modules/iostream-1_b.C -std=c++2b (test for excess errors)
+UNRESOLVED: g++.dg/modules/iostream-1 -std=c++2b link
+UNRESOLVED: g++.dg/modules/iostream-1 -std=c++2b execute
PASS: g++.dg/modules/keyword-1_a.C -std=c++17 (test for excess errors)
PASS: g++.dg/modules/keyword-1_a.C module-cmi bob (gcm.cache/bob.gcm)
PASS: g++.dg/modules/keyword-1_b.C -std=c++17 (test for excess errors)
@@ -197839,7 +197838,7 @@
PASS: g++.dg/modules/part-5_a.C module-cmi module1:submodule1
(gcm.cache/module1-submodule1.gcm)
PASS: g++.dg/modules/part-5_b.C -std=c++2b (test for excess errors)
PASS: g++.dg/modules/part-5_b.C module-cmi module1 (gcm.cache/module1.gcm)
-PASS: g++.dg/modules/part-5_c.C -std=c++2b (test for excess errors)
+FAIL: g++.dg/modules/part-5_c.C -std=c++2b (test for excess errors)
PASS: g++.dg/modules/part-6_a.C -std=c++17 (test for excess errors)
PASS: g++.dg/modules/part-6_a.C module-cmi foo:exp (gcm.cache/foo-exp.gcm)
PASS: g++.dg/modules/part-6_b.C -std=c++17 (test for excess errors)
@@ -238085,10 +238084,10 @@
=== g++ Summary ===
-# of expected passes 233644
-# of unexpected failures 124
+# of expected passes 233619
+# of unexpected failures 140
# of expected failures 2215
-# of unresolved testcases 16
+# of unresolved testcases 24
# of unsupported tests 2017
/home/alx/src/gnu/gcc/.tmp.null/gcc/xg++ version 15.0.0 20241010
(experimental) (GCC)
And here's some entry of the log:
$ cat gcc/testsuite/g++/g++.log | grep -B17 -A7 'FAIL: g++.dg/modules/p1689-2.C
-std=c++2b (test for excess errors)'
Executing on host: /home/alx/src/gnu/gcc/.tmp.null/gcc/testsuite/g++/../../xg++
-B/home/alx/src/gnu/gcc/.tmp.null/gcc/testsuite/g++/../../
/home/alx/src/gnu/gcc/null/gcc/testsuite/g++.dg/modules/p1689-2.C
-fdiagnostics-plain-output -nostdinc++
-I/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu
-I/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include
-I/home/alx/src/gnu/gcc/null/libstdc++-v3/libsupc++
-I/home/alx/src/gnu/gcc/null/libstdc++-v3/include/backward
-I/home/alx/src/gnu/gcc/null/libstdc++-v3/testsuite/util -fmessage-length=0
-std=c++2b -pedantic-errors -Wno-long-long -E -MT p1689-2.ddi -MD -fmodules-ts
-fdeps-format=p1689r5 -fdeps-target=p1689-2.o -fdeps-file=p1689-2.ddi -S -o
p1689-2.s (timeout = 300)
spawn -ignore SIGHUP
/home/alx/src/gnu/gcc/.tmp.null/gcc/testsuite/g++/../../xg++
-B/home/alx/src/gnu/gcc/.tmp.null/gcc/testsuite/g++/../../
/home/alx/src/gnu/gcc/null/gcc/testsuite/g++.dg/modules/p1689-2.C
-fdiagnostics-plain-output -nostdinc++
-I/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu
-I/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include
-I/home/alx/src/gnu/gcc/null/libstdc++-v3/libsupc++
-I/home/alx/src/gnu/gcc/null/libstdc++-v3/include/backward
-I/home/alx/src/gnu/gcc/null/libstdc++-v3/testsuite/util -fmessage-length=0
-std=c++2b -pedantic-errors -Wno-long-long -E -MT p1689-2.ddi -MD -fmodules-ts
-fdeps-format=p1689r5 -fdeps-target=p1689-2.o -fdeps-file=p1689-2.ddi -S -o
p1689-2.s
In module imported at
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/system_error:45:1,
included from
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/ios_base.h:48,
from
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/ios:46,
from
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/ostream:42,
from
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/iostream:43,
of module
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/iostream,
imported at
/home/alx/src/gnu/gcc/null/gcc/testsuite/g++.dg/modules/p1689-2.C:14:
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/stdexcept:
error: module
'/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/stdexcept'
CRC mismatch
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/stdexcept:
error: failed to read compiled module: Bad file data
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/stdexcept:
note: compiled module file is
'gcm.cache/./home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/stdexcept.gcm'
In module imported at
/home/alx/src/gnu/gcc/null/gcc/testsuite/g++.dg/modules/p1689-2.C:14:1:
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/iostream:
error: failed to read compiled module: Bad import dependency
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/iostream:
note: compiled module file is
'gcm.cache/./home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/iostream.gcm'
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/iostream:
fatal error: returning to the gate for a mechanical issue
compilation terminated.
compiler exited with status 1
FAIL: g++.dg/modules/p1689-2.C -std=c++2b (test for excess errors)
Excess errors:
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/stdexcept:
error: module
'/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/stdexcept'
CRC mismatch
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/stdexcept:
error: failed to read compiled module: Bad file data
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/iostream:
error: failed to read compiled module: Bad import dependency
/home/alx/src/gnu/gcc/.tmp.null/x86_64-pc-linux-gnu/libstdc++-v3/include/iostream:
fatal error: returning to the gate for a mechanical issue
compilation terminated.
--
<https://www.alejandro-colomar.es/>
signature.asc
Description: PGP signature
