This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Tue, Sep 16, 2014 at 12:41:46PM +0200, Jakub Jelinek wrote: > s/fot/for/; why are you using a separate hunk for clang instead of using the > earlier one? I thought it looked ugly when I wrote the entire conditional in one place but I notice now (since you pointed it out) that it actually makes things wrong. > > +#if !defined __extern_always_inline && defined __clang__ > > +# if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ > > +# define __extern_inline extern __inline __attribute__ ((__gnu_inline__)) > > +# define __extern_always_inline \ > > + extern __always_inline __attribute__ ((__gnu_inline__)) > > +# else > > +# define __extern_inline extern __inline > > +# define __extern_always_inline extern __always_inline > > This doesn't look right. If you have clang that doesn't have gnu_inline > support, in C++ extern __inline definitely is not the right semantics. > You don't want to define the macros then. Here's the updated patch, again tested with the same program. Siddhesh [BZ #17266] * misc/sys/cdefs.h: Define __extern_always_inline for clang 4.2 and newer. diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h index d8ee73c..6a789e7 100644 --- a/misc/sys/cdefs.h +++ b/misc/sys/cdefs.h @@ -318,8 +318,14 @@ #endif /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 - inline semantics, unless -fgnu89-inline is used. */ -#if !defined __cplusplus || __GNUC_PREREQ (4,3) + inline semantics, unless -fgnu89-inline is used. + + clang++ identifies itself as gcc-4.2, but has support for GNU inlining + semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and + __GNUC_GNU_INLINE__ macro definitions. */ +#if (!defined __cplusplus || __GNUC_PREREQ (4,3) \ + || (defined __clang__ && (defined __GNUC_STDC_INLINE__ \ + || defined __GNUC_GNU_INLINE__))) # if defined __GNUC_STDC_INLINE__ || defined __cplusplus # define __extern_inline extern __inline __attribute__ ((__gnu_inline__)) # define __extern_always_inline \
Attachment:
pgpGj2BTJwh66.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |