Re: git: d5c01e1124ff - main - cdefs.h: Remove pre gcc 5.0 support
Date: Sun, 23 Jun 2024 23:45:27 UTC
Indeed. But none of the ones that I removed are affected by this quirk since they are true for clang all versions. Warner On Sat, Jun 22, 2024 at 12:47 PM Pedro Giffuni <pfg@freebsd.org> wrote: > It was long ago when I last touched this but FWIW ... > > clang used to report itself as GCC 4.2 and kept it's GCC extension support > level consistent with that version so these version numbers were relevant. > > Pedro. > > On Thursday, June 20, 2024 at 09:41:34 PM GMT-5, Warner Losh < > imp@freebsd.org> wrote: > > > The branch main has been updated by imp: > > URL: > https://cgit.FreeBSD.org/src/commit/?id=d5c01e1124ffa4adb2513e7e8d708d7072dbfc75 > > commit d5c01e1124ffa4adb2513e7e8d708d7072dbfc75 > Author: Warner Losh <imp@FreeBSD.org> > AuthorDate: 2024-06-20 23:03:15 +0000 > Commit: Warner Losh <imp@FreeBSD.org> > CommitDate: 2024-06-21 02:41:09 +0000 > > cdefs.h: Remove pre gcc 5.0 support > > Reviewed by: brooks > Differential Revision: https://reviews.freebsd.org/D45656 > Sponsored by: Netflix > --- > sys/sys/cdefs.h | 54 ------------------------------------------------------ > 1 file changed, 54 deletions(-) > > diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h > index a6ecdca5d8b9..43d179b82020 100644 > --- a/sys/sys/cdefs.h > +++ b/sys/sys/cdefs.h > @@ -164,18 +164,9 @@ > #define __aligned(x) __attribute__((__aligned__(x))) > #define __section(x) __attribute__((__section__(x))) > #define __writeonly __unused > -#if __GNUC_PREREQ__(4, 3) || __has_attribute(__alloc_size__) > #define __alloc_size(x) __attribute__((__alloc_size__(x))) > #define __alloc_size2(n, x) __attribute__((__alloc_size__(n, x))) > -#else > -#define __alloc_size(x) > -#define __alloc_size2(n, x) > -#endif > -#if __GNUC_PREREQ__(4, 9) || __has_attribute(__alloc_align__) > #define __alloc_align(x) __attribute__((__alloc_align__(x))) > -#else > -#define __alloc_align(x) > -#endif > > /* > * Keywords added in C11. > @@ -199,15 +190,6 @@ > #define _Alignof(x) __alignof(x) > #endif > > -#if !defined(__cplusplus) && !__has_extension(c_atomic) && \ > - !__has_extension(cxx_atomic) && !__GNUC_PREREQ__(4, 7) > -/* > - * No native support for _Atomic(). Place object in structure to prevent > - * most forms of direct non-atomic access. > - */ > -#define _Atomic(T) struct { T volatile __val; } > -#endif > - > #if defined(__cplusplus) && __cplusplus >= 201103L > #define _Noreturn [[noreturn]] > #else > @@ -218,15 +200,6 @@ > #if (defined(__cplusplus) && __cplusplus >= 201103L) || \ > __has_extension(cxx_static_assert) > #define _Static_assert(x, y) static_assert(x, y) > -#elif __GNUC_PREREQ__(4,6) && !defined(__cplusplus) > -/* Nothing, gcc 4.6 and higher has _Static_assert built-in */ > -#elif defined(__COUNTER__) > -#define _Static_assert(x, y) __Static_assert(x, __COUNTER__) > -#define __Static_assert(x, y) ___Static_assert(x, y) > -#define ___Static_assert(x, y) typedef char __assert_ ## y[(x) ? 1 > : -1] \ > - __unused > -#else > -#define _Static_assert(x, y) struct __hack > #endif > #endif > > @@ -276,7 +249,6 @@ > * void bar(int myArray[__min_size(10)]); > */ > #if !defined(__cplusplus) && \ > - (defined(__clang__) || __GNUC_PREREQ__(4, 6)) && \ > (!defined(__STDC_VERSION__) || (__STDC_VERSION__ >= 199901)) > #define __min_size(x) static (x) > #else > @@ -302,17 +274,9 @@ > #define __result_use_or_ignore_check > #endif /* !__clang__ */ > > -#if __GNUC_PREREQ__(4, 1) > #define __returns_twice __attribute__((__returns_twice__)) > -#else > -#define __returns_twice > -#endif > > -#if __GNUC_PREREQ__(4, 6) || __has_builtin(__builtin_unreachable) > #define __unreachable() __builtin_unreachable() > -#else > -#define __unreachable() ((void)0) > -#endif > > #if !defined(__STRICT_ANSI__) || __STDC_VERSION__ >= 199901 > #define __LONG_LONG_SUPPORTED > @@ -353,33 +317,15 @@ > #define __predict_true(exp) __builtin_expect((exp), 1) > #define __predict_false(exp) __builtin_expect((exp), 0) > > -#if __GNUC_PREREQ__(4, 0) > #define __null_sentinel __attribute__((__sentinel__)) > #define __exported __attribute__((__visibility__("default"))) > #define __hidden __attribute__((__visibility__("hidden"))) > -#else > -#define __null_sentinel > -#define __exported > -#define __hidden > -#endif > > /* > * We define this here since <stddef.h>, <sys/queue.h>, and <sys/types.h> > * require it. > */ > -#if __GNUC_PREREQ__(4, 1) > #define __offsetof(type, field) __builtin_offsetof(type, field) > -#else > -#ifndef __cplusplus > -#define __offsetof(type, field) \ > - ((__size_t)(__uintptr_t)((const volatile void *)&((type *)0)->field)) > -#else > -#define __offsetof(type, field) \ > - (__offsetof__ (reinterpret_cast <__size_t> \ > - (&reinterpret_cast <const volatile char &> \ > - (static_cast<type *> (0)->field)))) > -#endif > -#endif > #define __rangeof(type, start, end) \ > (__offsetof(type, end) - __offsetof(type, start)) > >