git: fc88be257e30 - main - Revert "stddef.h: add unreachable() for C23 compliance"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 04 Dec 2025 23:28:28 UTC
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