Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 04 Dec 2025 23:28:28 +0000
From:      Robert Clausecker <fuz@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: fc88be257e30 - main - Revert "stddef.h: add unreachable() for C23 compliance"
Message-ID:  <6932191c.974e.6390bbba@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by fuz:

URL: https://cgit.FreeBSD.org/src/commit/?id=fc88be257e30c3e3c01f25ec3a3a6e7933b40c54

commit fc88be257e30c3e3c01f25ec3a3a6e7933b40c54
Author:     Robert Clausecker <fuz@FreeBSD.org>
AuthorDate: 2025-12-04 23:25:10 +0000
Commit:     Robert Clausecker <fuz@FreeBSD.org>
CommitDate: 2025-12-04 23:25:10 +0000

    Revert "stddef.h: add unreachable() for C23 compliance"
    
    Seems like a number of ports are *really* unhappy with this new
    macro.  These ports will have to be fixed and the patch reworked
    to perhaps not affect C++ (see D54041).  A general discussion on
    how we expose new language features may also need to take place.
    
    Reported by:    many people
    Approved by:    markj (mentor)
    
    This reverts commit b381d0980221b476cadbef862a8e5973d675fb7a.
---
 include/stddef.h             |  4 --
 share/man/man3/Makefile      |  3 +-
 share/man/man3/assert.3      |  5 +--
 share/man/man3/unreachable.3 | 90 --------------------------------------------
 4 files changed, 3 insertions(+), 99 deletions(-)

diff --git a/include/stddef.h b/include/stddef.h
index 2ac8e9fe3f77..3ba9a9946b01 100644
--- a/include/stddef.h
+++ b/include/stddef.h
@@ -61,10 +61,6 @@ typedef	__max_align_t	max_align_t;
 #endif
 #endif
 
-#if __ISO_C_VISIBLE >= 2023
-#define unreachable(x) __unreachable(x)
-#endif
-
 #ifndef offsetof
 #define	offsetof(type, field)	__builtin_offsetof(type, field)
 #endif
diff --git a/share/man/man3/Makefile b/share/man/man3/Makefile
index 3fd819814f77..8e4aadc460a6 100644
--- a/share/man/man3/Makefile
+++ b/share/man/man3/Makefile
@@ -36,8 +36,7 @@ MAN=		alloca.3 \
 		sysexits.3 \
 		tgmath.3 \
 		timeradd.3 \
-		tree.3 \
-		unreachable.3
+		tree.3
 
 MLINKS=		arb.3 ARB8_ENTRY.3 \
 		arb.3 ARB8_HEAD.3 \
diff --git a/share/man/man3/assert.3 b/share/man/man3/assert.3
index cbaedb49010a..f219aa1d6743 100644
--- a/share/man/man3/assert.3
+++ b/share/man/man3/assert.3
@@ -25,7 +25,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd November 27, 2025
+.Dd April 20, 2021
 .Dt ASSERT 3
 .Os
 .Sh NAME
@@ -118,8 +118,7 @@ constraint and includes the provided string literal:
 If none is provided, it only points at the constraint.
 .Sh SEE ALSO
 .Xr abort2 2 ,
-.Xr abort 3 ,
-.Xr unreachable 3
+.Xr abort 3
 .Sh STANDARDS
 The
 .Fn assert
diff --git a/share/man/man3/unreachable.3 b/share/man/man3/unreachable.3
deleted file mode 100644
index 9dd7da806d42..000000000000
--- a/share/man/man3/unreachable.3
+++ /dev/null
@@ -1,90 +0,0 @@
-.\"
-.\" Copyright (c) 2025 Robert Clausecker <fuz@FreeBSD.org>
-.\"
-.\" SPDX-License-Identifier: BSD-2-Clause
-.\"
-.Dd November 27, 2025
-.Dt UNREACHABLE 3
-.Os
-.Sh NAME
-.Nm unreachable
-.Nd the unreachable macro
-.Sh SYNOPSIS
-.In stddef.h
-.Fd #define unreachable()
-.Sh DESCRIPTION
-If the
-.Fn unreachable
-macro is reached during execution, behavior is undefined.
-This can be useful to hint to the compiler that some invariant is guaranteed to
-hold or that some case cannot occur.
-.Sh EXAMPLES
-Suppose a floating-point number
-.Va x
-is to be classified using the
-.Xr fpclassify 3
-macro and a different action is to be taken based on the result of the
-classification.
-As the set of possible return values is known, the
-.Fn unreachable
-macro can be used to hint to the compiler that it can omit checks for
-other possible return values:
-.Bd -literal -offset 3n
-#include <math.h>
-#include <stddef.h>
-#include <stdio.h>
-
-void print_classification(double x)
-{
-	printf("%f: ", x);
-
-	switch (fpclassify(x)) {
-	case FP_INFINITE:
-		puts("infinite");
-		break;
-
-	case FP_NAN:
-		puts("not a number");
-		break;
-
-	case FP_NORMAL:
-		puts("normal");
-		break;
-
-	case FP_SUBNORMAL:
-		puts("subnormal");
-		break;
-
-	case FP_ZERO:
-		puts("zero");
-		break;
-
-	default:
-		unreachable();
-	}
-}
-.Ed
-.Sh SEE ALSO
-.Xr assert 3
-.Sh STANDARDS
-The
-.Fn unreachable
-macro conforms to
-.St -isoC-2023 .
-.Sh HISTORY
-A
-.Dv /*NOTREACHED*/
-conventional comment was supported by the historical
-.Xr lint 1
-utility to suppress warnings about unreachable statements during static
-analysis.
-The
-.Fn unreachable
-macro was added in
-.Fx 15.1
-based on the earlier private
-.Fn __unreachable
-macro for compliance with
-.St -isoC-2023 .
-.Sh AUTHOR
-.Ah Robert Clausecker Aq Mt fuz@FreeBSD.org


help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6932191c.974e.6390bbba>