tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: static_assert



Perl is broken as it tries to detect C11 macro without compiler support.

This patch is wrong. We shall not overwrite compiler builtins. It
already caused enough issues in certain cases (like __func__ overload).

On 22.05.2019 20:41, maya%netbsd.org@localhost wrote:
> How is this for a proposed patch?
> 
> 
> 
> Provide a fallback definition for _Static_assert for when the compiler
> doesn't provide it (it doesn't have to for pre-C11).
> 
> Fixes https://rt.perl.org/Public/Bug/Display.html?id=134023
> 
> Index: cdefs.h
> ===================================================================
> RCS file: /cvsroot/src/sys/sys/cdefs.h,v
> retrieving revision 1.141
> diff -u -r1.141 cdefs.h
> --- cdefs.h	21 Feb 2019 21:34:05 -0000	1.141
> +++ cdefs.h	22 May 2019 18:39:41 -0000
> @@ -158,6 +158,14 @@
>  #define	__CTASSERT1(x, y, z)	typedef char y ## z[/*CONSTCOND*/(x) ? 1 : -1] __unused
>  
>  /*
> + * Fallback definition to _Static_assert, part of C11,
> + * normally provided by the compiler.
> + */
> +#if (__STDC_VERSION__ - 0 < 201101L)
> +#define _Static_assert(expr, message)	__CTASSERT(expr)
> +#endif
> +
> +/*
>   * The following macro is used to remove const cast-away warnings
>   * from gcc -Wcast-qual; it should be used with caution because it
>   * can hide valid errors; in particular most valid uses are in
> 


Attachment: signature.asc
Description: OpenPGP digital signature



Home | Main Index | Thread Index | Old Index