| /* Tests related to qualifiers and pointers to arrays in C2X, PR98397 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-std=c2x -Wc11-c2x-compat -pedantic-errors" } */ |
| |
| /* test that qualifiers are preserved in tertiary operator for pointers to arrays in C2X */ |
| |
| void f(void) |
| { |
| const int (*u)[1]; |
| void *v; |
| _Static_assert(_Generic(1 ? u : v, const void*: 1, void*: 0), "lost qualifier"); /* { dg-warning "pointer to array loses qualifier in conditional" } */ |
| _Static_assert(_Generic(1 ? v : u, const void*: 1, void*: 0), "lost qualifier"); /* { dg-warning "pointer to array loses qualifier in conditional" } */ |
| } |
| |
| /* test that assignment of unqualified to qualified pointers works as expected */ |
| |
| void g(void) |
| { |
| int (*x)[3]; |
| const int (*p)[3] = x; /* { dg-warning "arrays with different qualifiers" } */ |
| } |
| |
| /* test that assignment of qualified void pointers works as expected */ |
| |
| void h(void) |
| { |
| const void* x; |
| const int (*p)[3] = x; /* { dg-warning "array with qualifier on the element is not qualified before C2X" } */ |
| } |
| |