https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122591

--- Comment #2 from Alejandro Colomar <[email protected]> ---
Here's a reproducer that gives some more information:


alx@devuan:~/tmp$ cat c.c 
#include <stddef.h>

int
main(void)
{
        short  i[1];

        (void) _Generic(_Countof(i),
                char:                1,
                signed char:         2,
                short:               3,
                int:                 4,
                long:                5,
                long long:           6,
                unsigned char:       7,
                unsigned short:      8,
                unsigned int:        9,
                unsigned long:      10,
                unsigned long long: 11
        );

        typeof(_Countof(i))  *p = NULL;
        size_t               *q = p;
}
alx@devuan:~/tmp$ /opt/local/gnu/gcc/fwd_incomp4/bin/gcc c.c 
c.c: In function ‘main’:
c.c:8:25: error: ‘_Generic’ selector of type ‘sizetype’ is not compatible with
any association
    8 |         (void) _Generic(_Countof(i),
      |                         ^~~~~~~~
c.c:23:35: error: initialization of ‘size_t *’ {aka ‘long unsigned int *’} from
incompatible pointer type ‘sizetype *’ [-Wincompatible-pointer-types]
   23 |         size_t               *q = p;
      |                                   ^



The issue seems to be that GCC is not connecting this sizetype --which seems to
be some GCC internal-- to the actual size_t.  I don't know enough of GCC
internals to fix this.

Reply via email to