The branch main has been updated by fuz: URL: https://cgit.FreeBSD.org/src/commit/?id=fc88be257e30c3e3c01f25ec3a3a6e7933b40c54
commit fc88be257e30c3e3c01f25ec3a3a6e7933b40c54 Author: Robert Clausecker <[email protected]> AuthorDate: 2025-12-04 23:25:10 +0000 Commit: Robert Clausecker <[email protected]> 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 <[email protected]> -.\" -.\" 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 [email protected]
