git: 2508372b7b46 - main - cdefs.h: Assume the compiler supports at least GNU C 3.0 extensions
Date: Fri, 21 Jun 2024 02:41:23 UTC
The branch main has been updated by imp:
URL: https://cgit.FreeBSD.org/src/commit/?id=2508372b7b46117a9fb801b50624265d30888442
commit 2508372b7b46117a9fb801b50624265d30888442
Author: Warner Losh <imp@FreeBSD.org>
AuthorDate: 2024-06-20 23:02:42 +0000
Commit: Warner Losh <imp@FreeBSD.org>
CommitDate: 2024-06-21 02:41:08 +0000
cdefs.h: Assume the compiler supports at least GNU C 3.0 extensions
All compilers that can build FreeBSD binaries (as opposed to the entire
system) support at least gcc 9 (gcc, clang, tcc). Even pcc supports most
of the gcc 4.3 attributes. Make this file simpler by removing support
for pre-3.0 compilers.
Reviewed by: brooks
Differential Revision: https://reviews.freebsd.org/D45653
Sponsored by: Netflix
---
sys/sys/cdefs.h | 79 +--------------------------------------------------------
1 file changed, 1 insertion(+), 78 deletions(-)
diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h
index 476c89d1dddb..88019819eb35 100644
--- a/sys/sys/cdefs.h
+++ b/sys/sys/cdefs.h
@@ -160,18 +160,6 @@
* a feature that we cannot live without.
*/
#define __weak_symbol __attribute__((__weak__))
-#if !__GNUC_PREREQ__(2, 5)
-#define __dead2
-#define __pure2
-#define __unused
-#endif
-#if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 && __GNUC_MINOR__ < 7
-#define __dead2 __attribute__((__noreturn__))
-#define __pure2 __attribute__((__const__))
-#define __unused
-/* XXX Find out what to do for __packed, __aligned and __section */
-#endif
-#if __GNUC_PREREQ__(2, 7)
#define __dead2 __attribute__((__noreturn__))
#define __pure2 __attribute__((__const__))
#define __unused __attribute__((__unused__))
@@ -179,7 +167,6 @@
#define __packed __attribute__((__packed__))
#define __aligned(x) __attribute__((__aligned__(x)))
#define __section(x) __attribute__((__section__(x)))
-#endif
#define __writeonly __unused
#if __GNUC_PREREQ__(4, 3) || __has_attribute(__alloc_size__)
#define __alloc_size(x) __attribute__((__alloc_size__(x)))
@@ -194,10 +181,6 @@
#define __alloc_align(x)
#endif
-#if !__GNUC_PREREQ__(2, 95)
-#define __alignof(x) __offsetof(struct { char __a; x __b; }, __b)
-#endif
-
/*
* Keywords added in C11.
*/
@@ -304,13 +287,8 @@
#define __min_size(x) (x)
#endif
-#if __GNUC_PREREQ__(2, 96)
#define __malloc_like __attribute__((__malloc__))
#define __pure __attribute__((__pure__))
-#else
-#define __malloc_like
-#define __pure
-#endif
#if __GNUC_PREREQ__(3, 1)
#define __always_inline __attribute__((__always_inline__))
@@ -355,7 +333,7 @@
#define __unreachable() ((void)0)
#endif
-#if (defined(__GNUC__) && __GNUC__ >= 2) && !defined(__STRICT_ANSI__) || __STDC_VERSION__ >= 199901
+#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ >= 199901
#define __LONG_LONG_SUPPORTED
#endif
@@ -389,45 +367,10 @@
*/
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901
#define __restrict restrict
-#elif !__GNUC_PREREQ__(2, 95)
-#define __restrict
#endif
-/*
- * GNU C version 2.96 adds explicit branch prediction so that
- * the CPU back-end can hint the processor and also so that
- * code blocks can be reordered such that the predicted path
- * sees a more linear flow, thus improving cache behavior, etc.
- *
- * The following two macros provide us with a way to utilize this
- * compiler feature. Use __predict_true() if you expect the expression
- * to evaluate to true, and __predict_false() if you expect the
- * expression to evaluate to false.
- *
- * A few notes about usage:
- *
- * * Generally, __predict_false() error condition checks (unless
- * you have some _strong_ reason to do otherwise, in which case
- * document it), and/or __predict_true() `no-error' condition
- * checks, assuming you want to optimize for the no-error case.
- *
- * * Other than that, if you don't know the likelihood of a test
- * succeeding from empirical or other `hard' evidence, don't
- * make predictions.
- *
- * * These are meant to be used in places that are run `a lot'.
- * It is wasteful to make predictions in code that is run
- * seldomly (e.g. at subsystem initialization time) as the
- * basic block reordering that this affects can often generate
- * larger code.
- */
-#if __GNUC_PREREQ__(2, 96)
#define __predict_true(exp) __builtin_expect((exp), 1)
#define __predict_false(exp) __builtin_expect((exp), 0)
-#else
-#define __predict_true(exp) (exp)
-#define __predict_false(exp) (exp)
-#endif
#if __GNUC_PREREQ__(4, 0)
#define __null_sentinel __attribute__((__sentinel__))
@@ -481,13 +424,6 @@
* that are known to support the features properly (old versions of gcc-2
* didn't permit keeping the keywords out of the application namespace).
*/
-#if !__GNUC_PREREQ__(2, 7)
-#define __printflike(fmtarg, firstvararg)
-#define __scanflike(fmtarg, firstvararg)
-#define __format_arg(fmtarg)
-#define __strfmonlike(fmtarg, firstvararg)
-#define __strftimelike(fmtarg, firstvararg)
-#else
#define __printflike(fmtarg, firstvararg) \
__attribute__((__format__ (__printf__, fmtarg, firstvararg)))
#define __scanflike(fmtarg, firstvararg) \
@@ -497,7 +433,6 @@
__attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))
#define __strftimelike(fmtarg, firstvararg) \
__attribute__((__format__ (__strftime__, fmtarg, firstvararg)))
-#endif
/* Compiler-dependent macros that rely on FreeBSD-specific extensions. */
#if defined(__FreeBSD_cc_version) && __FreeBSD_cc_version >= 300001 && \
@@ -508,7 +443,6 @@
#define __printf0like(fmtarg, firstvararg)
#endif
-#if defined(__GNUC__)
#define __strong_reference(sym,aliassym) \
extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))
#ifdef __STDC__
@@ -536,22 +470,11 @@
#define __sym_default(impl,sym,verid) \
__asm__(".symver impl, sym@@@verid")
#endif /* __STDC__ */
-#endif /* __GNUC__ */
#define __GLOBL(sym) __asm__(".globl " __XSTRING(sym))
#define __WEAK(sym) __asm__(".weak " __XSTRING(sym))
-#if defined(__GNUC__)
#define __IDSTRING(name,string) __asm__(".ident\t\"" string "\"")
-#else
-/*
- * The following definition might not work well if used in header files,
- * but it should be better than nothing. If you want a "do nothing"
- * version, then it should generate some harmless declaration, such as:
- * #define __IDSTRING(name,string) struct __hack
- */
-#define __IDSTRING(name,string) static const char name[] __unused = string
-#endif
/*
* Embed the rcs id of a source file in the resulting library. Note that in