Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Jun 2024 17:45:27 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        Pedro Giffuni <pfg@freebsd.org>
Cc:        "src-committers@freebsd.org" <src-committers@freebsd.org>,  "dev-commits-src-all@freebsd.org" <dev-commits-src-all@freebsd.org>,  "dev-commits-src-main@freebsd.org" <dev-commits-src-main@freebsd.org>, Warner Losh <imp@freebsd.org>
Subject:   Re: git: d5c01e1124ff - main - cdefs.h: Remove pre gcc 5.0 support
Message-ID:  <CANCZdfornovuQ4zJMxBqbgdEO7rZu9pF1LyoyKRiuadCyKi02w@mail.gmail.com>
In-Reply-To: <111875645.165697.1719082066518@mail.yahoo.com>
References:  <202406210241.45L2fQZA057110@gitrepo.freebsd.org> <111875645.165697.1719082066518@mail.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--000000000000fd48f8061b97429d
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

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=E2=80=AFPM Pedro Giffuni <pfg@freebsd.org> wr=
ote:

> 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 suppor=
t
> 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=3Dd5c01e1124ffa4adb2513e7e8d708d7=
072dbfc75
>
> 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 >=3D 201103L
> #define    _Noreturn        [[noreturn]]
> #else
> @@ -218,15 +200,6 @@
> #if (defined(__cplusplus) && __cplusplus >=3D 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__ >=3D 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__ >=3D 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))
>
>

--000000000000fd48f8061b97429d
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Indeed. But none of the ones that I removed are affected b=
y this quirk since they are true for clang all versions.<div><br></div><div=
>Warner</div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D=
"gmail_attr">On Sat, Jun 22, 2024 at 12:47=E2=80=AFPM Pedro Giffuni &lt;<a =
href=3D"mailto:pfg@freebsd.org">pfg@freebsd.org</a>&gt; wrote:<br></div><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef=
t:1px solid rgb(204,204,204);padding-left:1ex"><div><div style=3D"font-fami=
ly:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-size:16px"><d=
iv></div>
        <div dir=3D"ltr">It was long ago when I last touched this but FWIW =
...<br></div><div dir=3D"ltr"><br></div><div dir=3D"ltr">clang used to repo=
rt itself as GCC 4.2 and kept it&#39;s GCC extension support level consiste=
nt with that version so these version numbers were relevant.</div><div dir=
=3D"ltr"><br></div><div dir=3D"ltr">Pedro.</div><div><br></div>
       =20
        </div><div id=3D"m_160829819354664847ydp3058622eyahoo_quoted_970812=
1018">
            <div style=3D"font-family:&quot;Helvetica Neue&quot;,Helvetica,=
Arial,sans-serif;font-size:13px;color:rgb(38,40,42)">
               =20
                <div>
                        On Thursday, June 20, 2024 at 09:41:34 PM GMT-5, Wa=
rner Losh &lt;<a href=3D"mailto:imp@freebsd.org" target=3D"_blank">imp@free=
bsd.org</a>&gt; wrote:
                    </div>
                    <div><br></div>
                    <div><br></div>
               =20
               =20
                <div><div dir=3D"ltr">The branch main has been updated by i=
mp:<br></div><div dir=3D"ltr"><br></div><div dir=3D"ltr">URL: <a href=3D"ht=
tps://cgit.FreeBSD.org/src/commit/?id=3Dd5c01e1124ffa4adb2513e7e8d708d7072d=
bfc75" rel=3D"nofollow" target=3D"_blank">https://cgit.FreeBSD.org/src/comm=
it/?id=3Dd5c01e1124ffa4adb2513e7e8d708d7072dbfc75</a><br></div><div dir=3D"=
ltr"><br></div><div dir=3D"ltr">commit d5c01e1124ffa4adb2513e7e8d708d7072db=
fc75<br></div><div dir=3D"ltr">Author:=C2=A0 =C2=A0  Warner Losh &lt;<a hre=
f=3D"mailto:imp@FreeBSD.org" rel=3D"nofollow" target=3D"_blank">imp@FreeBSD=
.org</a>&gt;<br></div><div dir=3D"ltr">AuthorDate: 2024-06-20 23:03:15 +000=
0<br></div><div dir=3D"ltr">Commit:=C2=A0 =C2=A0  Warner Losh &lt;<a href=
=3D"mailto:imp@FreeBSD.org" rel=3D"nofollow" target=3D"_blank">imp@FreeBSD.=
org</a>&gt;<br></div><div dir=3D"ltr">CommitDate: 2024-06-21 02:41:09 +0000=
<br></div><div dir=3D"ltr"><br></div><div dir=3D"ltr">=C2=A0 =C2=A0 cdefs.h=
: Remove pre gcc 5.0 support<br></div><div dir=3D"ltr">=C2=A0 =C2=A0 <br></=
div><div dir=3D"ltr">=C2=A0 =C2=A0 Reviewed by:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 brooks<br></div><div dir=3D"ltr">=C2=A0 =C2=A0 Differential R=
evision:=C2=A0 <a href=3D"https://reviews.freebsd.org/D45656" rel=3D"nofoll=
ow" target=3D"_blank">https://reviews.freebsd.org/D45656</a><br></div><div =
dir=3D"ltr">=C2=A0 =C2=A0 Sponsored by:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0  =
Netflix<br></div><div dir=3D"ltr">---<br></div><div dir=3D"ltr"> sys/sys/cd=
efs.h | 54 ------------------------------------------------------<br></div>=
<div dir=3D"ltr"> 1 file changed, 54 deletions(-)<br></div><div dir=3D"ltr"=
><br></div><div dir=3D"ltr">diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h<=
br></div><div dir=3D"ltr">index a6ecdca5d8b9..43d179b82020 100644<br></div>=
<div dir=3D"ltr">--- a/sys/sys/cdefs.h<br></div><div dir=3D"ltr">+++ b/sys/=
sys/cdefs.h<br></div><div dir=3D"ltr">@@ -164,18 +164,9 @@<br></div><div di=
r=3D"ltr"> #define=C2=A0=C2=A0=C2=A0 __aligned(x)=C2=A0=C2=A0=C2=A0 __attri=
bute__((__aligned__(x)))<br></div><div dir=3D"ltr"> #define=C2=A0=C2=A0=C2=
=A0 __section(x)=C2=A0=C2=A0=C2=A0 __attribute__((__section__(x)))<br></div=
><div dir=3D"ltr"> #define=C2=A0=C2=A0=C2=A0 __writeonly=C2=A0=C2=A0=C2=A0 =
__unused<br></div><div dir=3D"ltr">-#if __GNUC_PREREQ__(4, 3) || __has_attr=
ibute(__alloc_size__)<br></div><div dir=3D"ltr"> #define=C2=A0=C2=A0=C2=A0 =
__alloc_size(x)=C2=A0=C2=A0=C2=A0 __attribute__((__alloc_size__(x)))<br></d=
iv><div dir=3D"ltr"> #define=C2=A0=C2=A0=C2=A0 __alloc_size2(n, x)=C2=A0=C2=
=A0=C2=A0 __attribute__((__alloc_size__(n, x)))<br></div><div dir=3D"ltr">-=
#else<br></div><div dir=3D"ltr">-#define=C2=A0=C2=A0=C2=A0 __alloc_size(x)<=
br></div><div dir=3D"ltr">-#define=C2=A0=C2=A0=C2=A0 __alloc_size2(n, x)<br=
></div><div dir=3D"ltr">-#endif<br></div><div dir=3D"ltr">-#if __GNUC_PRERE=
Q__(4, 9) || __has_attribute(__alloc_align__)<br></div><div dir=3D"ltr"> #d=
efine=C2=A0=C2=A0=C2=A0 __alloc_align(x)=C2=A0=C2=A0=C2=A0 __attribute__((_=
_alloc_align__(x)))<br></div><div dir=3D"ltr">-#else<br></div><div dir=3D"l=
tr">-#define=C2=A0=C2=A0=C2=A0 __alloc_align(x)<br></div><div dir=3D"ltr">-=
#endif<br></div><div dir=3D"ltr"> <br></div><div dir=3D"ltr"> /*<br></div><=
div dir=3D"ltr">=C2=A0 * Keywords added in C11.<br></div><div dir=3D"ltr">@=
@ -199,15 +190,6 @@<br></div><div dir=3D"ltr"> #define=C2=A0=C2=A0=C2=A0 _A=
lignof(x)=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 __alignof(x)<br></div><div d=
ir=3D"ltr"> #endif<br></div><div dir=3D"ltr"> <br></div><div dir=3D"ltr">-#=
if !defined(__cplusplus) &amp;&amp; !__has_extension(c_atomic) &amp;&amp; \=
<br></div><div dir=3D"ltr">-=C2=A0=C2=A0=C2=A0 !__has_extension(cxx_atomic)=
 &amp;&amp; !__GNUC_PREREQ__(4, 7)<br></div><div dir=3D"ltr">-/*<br></div><=
div dir=3D"ltr">- * No native support for _Atomic(). Place object in struct=
ure to prevent<br></div><div dir=3D"ltr">- * most forms of direct non-atomi=
c access.<br></div><div dir=3D"ltr">- */<br></div><div dir=3D"ltr">-#define=
=C2=A0=C2=A0=C2=A0 _Atomic(T)=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 struct {=
 T volatile __val; }<br></div><div dir=3D"ltr">-#endif<br></div><div dir=3D=
"ltr">-<br></div><div dir=3D"ltr"> #if defined(__cplusplus) &amp;&amp; __cp=
lusplus &gt;=3D 201103L<br></div><div dir=3D"ltr"> #define=C2=A0=C2=A0=C2=
=A0 _Noreturn=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 [[noreturn]]<br></div><d=
iv dir=3D"ltr"> #else<br></div><div dir=3D"ltr">@@ -218,15 +200,6 @@<br></d=
iv><div dir=3D"ltr"> #if (defined(__cplusplus) &amp;&amp; __cplusplus &gt;=
=3D 201103L) || \<br></div><div dir=3D"ltr">=C2=A0 =C2=A0  __has_extension(=
cxx_static_assert)<br></div><div dir=3D"ltr"> #define=C2=A0=C2=A0=C2=A0 _St=
atic_assert(x, y)=C2=A0=C2=A0=C2=A0 static_assert(x, y)<br></div><div dir=
=3D"ltr">-#elif __GNUC_PREREQ__(4,6) &amp;&amp; !defined(__cplusplus)<br></=
div><div dir=3D"ltr">-/* Nothing, gcc 4.6 and higher has _Static_assert bui=
lt-in */<br></div><div dir=3D"ltr">-#elif defined(__COUNTER__)<br></div><di=
v dir=3D"ltr">-#define=C2=A0=C2=A0=C2=A0 _Static_assert(x, y)=C2=A0=C2=A0=
=C2=A0 __Static_assert(x, __COUNTER__)<br></div><div dir=3D"ltr">-#define=
=C2=A0=C2=A0=C2=A0 __Static_assert(x, y)=C2=A0=C2=A0=C2=A0 ___Static_assert=
(x, y)<br></div><div dir=3D"ltr">-#define=C2=A0=C2=A0=C2=A0 ___Static_asser=
t(x, y)=C2=A0=C2=A0=C2=A0 typedef char __assert_ ## y[(x) ? 1 : -1] \<br></=
div><div dir=3D"ltr">-=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=
=A0 =C2=A0=C2=A0=C2=A0 __unused<br></div><div dir=3D"ltr">-#else<br></div><=
div dir=3D"ltr">-#define=C2=A0=C2=A0=C2=A0 _Static_assert(x, y)=C2=A0=C2=A0=
=C2=A0 struct __hack<br></div><div dir=3D"ltr"> #endif<br></div><div dir=3D=
"ltr"> #endif<br></div><div dir=3D"ltr"> <br></div><div dir=3D"ltr">@@ -276=
,7 +249,6 @@<br></div><div dir=3D"ltr">=C2=A0 * void bar(int myArray[__min_=
size(10)]);<br></div><div dir=3D"ltr">=C2=A0 */<br></div><div dir=3D"ltr"> =
#if !defined(__cplusplus) &amp;&amp; \<br></div><div dir=3D"ltr">-=C2=A0 =
=C2=A0 (defined(__clang__) || __GNUC_PREREQ__(4, 6)) &amp;&amp; \<br></div>=
<div dir=3D"ltr">=C2=A0 =C2=A0  (!defined(__STDC_VERSION__) || (__STDC_VERS=
ION__ &gt;=3D 199901))<br></div><div dir=3D"ltr"> #define __min_size(x)=C2=
=A0=C2=A0=C2=A0 static (x)<br></div><div dir=3D"ltr"> #else<br></div><div d=
ir=3D"ltr">@@ -302,17 +274,9 @@<br></div><div dir=3D"ltr"> #define=C2=A0=C2=
=A0=C2=A0 __result_use_or_ignore_check<br></div><div dir=3D"ltr"> #endif /*=
 !__clang__ */<br></div><div dir=3D"ltr"> <br></div><div dir=3D"ltr">-#if _=
_GNUC_PREREQ__(4, 1)<br></div><div dir=3D"ltr"> #define=C2=A0=C2=A0=C2=A0 _=
_returns_twice=C2=A0=C2=A0=C2=A0 __attribute__((__returns_twice__))<br></di=
v><div dir=3D"ltr">-#else<br></div><div dir=3D"ltr">-#define=C2=A0=C2=A0=C2=
=A0 __returns_twice<br></div><div dir=3D"ltr">-#endif<br></div><div dir=3D"=
ltr"> <br></div><div dir=3D"ltr">-#if __GNUC_PREREQ__(4, 6) || __has_builti=
n(__builtin_unreachable)<br></div><div dir=3D"ltr"> #define=C2=A0=C2=A0=C2=
=A0 __unreachable()=C2=A0=C2=A0=C2=A0 __builtin_unreachable()<br></div><div=
 dir=3D"ltr">-#else<br></div><div dir=3D"ltr">-#define=C2=A0=C2=A0=C2=A0 __=
unreachable()=C2=A0=C2=A0=C2=A0 ((void)0)<br></div><div dir=3D"ltr">-#endif=
<br></div><div dir=3D"ltr"> <br></div><div dir=3D"ltr"> #if !defined(__STRI=
CT_ANSI__) || __STDC_VERSION__ &gt;=3D 199901<br></div><div dir=3D"ltr"> #d=
efine=C2=A0=C2=A0=C2=A0 __LONG_LONG_SUPPORTED<br></div><div dir=3D"ltr">@@ =
-353,33 +317,15 @@<br></div><div dir=3D"ltr"> #define=C2=A0=C2=A0=C2=A0 __p=
redict_true(exp)=C2=A0 =C2=A0  __builtin_expect((exp), 1)<br></div><div dir=
=3D"ltr"> #define=C2=A0=C2=A0=C2=A0 __predict_false(exp)=C2=A0 =C2=A0 __bui=
ltin_expect((exp), 0)<br></div><div dir=3D"ltr"> <br></div><div dir=3D"ltr"=
>-#if __GNUC_PREREQ__(4, 0)<br></div><div dir=3D"ltr"> #define=C2=A0=C2=A0=
=C2=A0 __null_sentinel=C2=A0=C2=A0=C2=A0 __attribute__((__sentinel__))<br><=
/div><div dir=3D"ltr"> #define=C2=A0=C2=A0=C2=A0 __exported=C2=A0=C2=A0=C2=
=A0 __attribute__((__visibility__(&quot;default&quot;)))<br></div><div dir=
=3D"ltr"> #define=C2=A0=C2=A0=C2=A0 __hidden=C2=A0=C2=A0=C2=A0 __attribute_=
_((__visibility__(&quot;hidden&quot;)))<br></div><div dir=3D"ltr">-#else<br=
></div><div dir=3D"ltr">-#define=C2=A0=C2=A0=C2=A0 __null_sentinel<br></div=
><div dir=3D"ltr">-#define=C2=A0=C2=A0=C2=A0 __exported<br></div><div dir=
=3D"ltr">-#define=C2=A0=C2=A0=C2=A0 __hidden<br></div><div dir=3D"ltr">-#en=
dif<br></div><div dir=3D"ltr"> <br></div><div dir=3D"ltr"> /*<br></div><div=
 dir=3D"ltr">=C2=A0 * We define this here since &lt;stddef.h&gt;, &lt;sys/q=
ueue.h&gt;, and &lt;sys/types.h&gt;<br></div><div dir=3D"ltr">=C2=A0 * requ=
ire it.<br></div><div dir=3D"ltr">=C2=A0 */<br></div><div dir=3D"ltr">-#if =
__GNUC_PREREQ__(4, 1)<br></div><div dir=3D"ltr"> #define=C2=A0=C2=A0=C2=A0 =
__offsetof(type, field)=C2=A0=C2=A0=C2=A0  __builtin_offsetof(type, field)<=
br></div><div dir=3D"ltr">-#else<br></div><div dir=3D"ltr">-#ifndef __cplus=
plus<br></div><div dir=3D"ltr">-#define=C2=A0=C2=A0=C2=A0 __offsetof(type, =
field) \<br></div><div dir=3D"ltr">-=C2=A0=C2=A0=C2=A0 ((__size_t)(__uintpt=
r_t)((const volatile void *)&amp;((type *)0)-&gt;field))<br></div><div dir=
=3D"ltr">-#else<br></div><div dir=3D"ltr">-#define=C2=A0=C2=A0=C2=A0 __offs=
etof(type, field)=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =
=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 \<br></div><div dir=3D"ltr">-=C2=A0 (=
__offsetof__ (reinterpret_cast &lt;__size_t&gt;=C2=A0=C2=A0=C2=A0 =C2=A0=C2=
=A0=C2=A0 =C2=A0=C2=A0=C2=A0 \<br></div><div dir=3D"ltr">-=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0  (&amp;reinterpret_cast &lt;const vo=
latile char &amp;&gt;=C2=A0=C2=A0=C2=A0 \<br></div><div dir=3D"ltr">-=C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (static_cast&lt;ty=
pe *&gt; (0)-&gt;field))))<br></div><div dir=3D"ltr">-#endif<br></div><div =
dir=3D"ltr">-#endif<br></div><div dir=3D"ltr"> #define=C2=A0=C2=A0=C2=A0 __=
rangeof(type, start, end) \<br></div><div dir=3D"ltr"> =C2=A0=C2=A0=C2=A0 (=
__offsetof(type, end) - __offsetof(type, start))<br></div><div dir=3D"ltr">=
 <br></div></div>
            </div>
        </div></div></blockquote></div>

--000000000000fd48f8061b97429d--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfornovuQ4zJMxBqbgdEO7rZu9pF1LyoyKRiuadCyKi02w>