On Sun, 12 Jan 2025, David Malcolm wrote:

> So I've dropped the takes_int_p, takes_void_p, and
> maybe_inform_empty_args_c23_transition from the patch.  Here's an
> updated version that keeps the rest of the changes.  I'd like to get
> this into GCC 15 to make build failures due to C23-incompatibilities
> more readable.

Some comments in testcases still repeat the misconception about implicit 
(int) for unprototyped functions.

OK with that fixed.

> diff --git a/gcc/testsuite/gcc.dg/c23-mismatching-fn-ptr-alsatools.c 
> b/gcc/testsuite/gcc.dg/c23-mismatching-fn-ptr-alsatools.c
> new file mode 100644
> index 000000000000..e3460e546a9a
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/c23-mismatching-fn-ptr-alsatools.c
> @@ -0,0 +1,21 @@
> +/* Examples of a mismatching function pointer types in
> +   legacy code compiled with C23 that assumed () meant (int).

This comment is incorrect, unprototyped is not (int).

> diff --git a/gcc/testsuite/gcc.dg/c23-mismatching-fn-ptr.c 
> b/gcc/testsuite/gcc.dg/c23-mismatching-fn-ptr.c
> new file mode 100644
> index 000000000000..4db44f48a3f2
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/c23-mismatching-fn-ptr.c
> @@ -0,0 +1,76 @@
> +/* Verify that when we complain about incompatible pointer types
> +   involving function pointers, we show the declaration of the
> +   function.  
> +
> +   In particular, check the case of
> +      extern void fn ();
> +   changing meaning in C23 (from taking int to taking void).  */

Likewise.

> +/* Test of storing a sighandler_t where the declaration of the
> +   destination might be relying on implicit int arg, which
> +   becomes void in C23.

Likewise.

-- 
Joseph S. Myers
josmy...@redhat.com

Reply via email to