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]

Re: Fix non-__GNUC__ definitions of __inline and __restrict (bug 17721)



On 01/02/2018 18:35, Joseph Myers wrote:
> Bug 17721 reports that the non-__GNUC__ definitions of __inline and
> __restrict are suboptimal, in that they are defined to empty when they
> could be defined to inline and restrict for appropriate language
> versions.  This patch makes those fixes.
> 
> Tested for x86_64 (however, I have not done any testing with an actual
> non-__GNUC__ compiler and it's likely such compilers may have other
> problems with glibc headers).

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>

> 
> 2018-02-01  Joseph Myers  <joseph@codesourcery.com>
> 
> 	[BZ #17721]
> 	* misc/sys/cdefs.h [!__GNUC__ && (__cplusplus || (__STDC_VERSION__
> 	&& __STDC_VERSION__ >= 199901L))] (__inline): Define to inline.
> 	[!__GNUC_PREREQ (2,92) && __STDC_VERSION__ && __STDC_VERSION__ >=
> 	199901L] (__restrict): Define to restrict.
> 
> diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
> index af103fd..e80a45c 100644
> --- a/misc/sys/cdefs.h
> +++ b/misc/sys/cdefs.h
> @@ -72,7 +72,12 @@
>  
>  #else	/* Not GCC.  */
>  
> -# define __inline		/* No inline functions.  */
> +# if (defined __cplusplus						\
> +      || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
> +#  define __inline	inline
> +# else
> +#  define __inline		/* No inline functions.  */
> +# endif
>  
>  # define __THROW
>  # define __THROWNL
> @@ -368,7 +373,11 @@
>  
>  /* __restrict is known in EGCS 1.2 and above. */
>  #if !__GNUC_PREREQ (2,92)
> -# define __restrict	/* Ignore */
> +# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
> +#  define __restrict	restrict
> +# else
> +#  define __restrict	/* Ignore */
> +# endif
>  #endif

Can't we dump the __GNUC_PREREQ and just check for __STDC_VERSION__? Or old
GCC version does not correct correctly?

>  
>  /* ISO C99 also allows to declare arrays as non-overlapping.  The syntax is
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]