1 /* Tests related to qualifiers and pointers to arrays in C2X, PR98397 */
2 /* { dg-do compile } */
3 /* { dg-options "-std=c2x -Wc11-c2x-compat" } */
4
5 /* test that qualifiers are preserved in tertiary operator for pointers to arrays in C2X */
6
7 void f(void)
8 {
9 const int (*u)[1];
10 void *v;
11 _Static_assert(_Generic(1 ? u : v, const void*: 1, void*: 0), "lost qualifier"); /* { dg-warning "pointer to array loses qualifier in conditional" } */
12 _Static_assert(_Generic(1 ? v : u, const void*: 1, void*: 0), "lost qualifier"); /* { dg-warning "pointer to array loses qualifier in conditional" } */
13 }
14
15 /* test that assignment of unqualified to qualified pointers works as expected */
16
17 void g(void)
18 {
19 int (*x)[3];
20 const int (*p)[3] = x; /* { dg-warning "arrays with different qualifiers" } */
21 }
22
23 /* test that assignment of qualified void pointers works as expected */
24
25 void h(void)
26 {
27 const void* x;
28 const int (*p)[3] = x; /* { dg-warning "array with qualifier on the element is not qualified before C2X" } */
29 }
30