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))
>
>