1/* Test whether the -Wcast-qual handles cv-qualified functions correctly. */ 2/* { dg-do compile } */ 3/* { dg-options "-Wcast-qual" } */ 4 5typedef int (intfn_t) (int); 6typedef void (voidfn_t) (void); 7 8typedef const intfn_t *constfn_t; 9typedef volatile voidfn_t *noreturnfn_t; 10 11intfn_t intfn; 12const intfn_t constfn; 13voidfn_t voidfn; 14volatile voidfn_t noreturnfn; 15 16intfn_t *i1 = intfn; 17intfn_t *i2 = (intfn_t *) intfn; 18intfn_t *i3 = constfn; 19intfn_t *i4 = (intfn_t *) constfn; /* { dg-bogus "discards qualifier" } */ 20 21constfn_t p1 = intfn; /* { dg-warning "makes qualified function" } */ 22constfn_t p2 = (constfn_t) intfn; /* { dg-warning "new qualifier" } */ 23constfn_t p3 = constfn; 24constfn_t p4 = (constfn_t) constfn; 25 26voidfn_t *v1 = voidfn; 27voidfn_t *v2 = (voidfn_t *) voidfn; 28voidfn_t *v3 = noreturnfn; 29voidfn_t *v4 = (voidfn_t *) noreturnfn; /* { dg-bogus "discards qualifier" } */ 30 31noreturnfn_t n1 = voidfn; /* { dg-warning "makes qualified function" } */ 32noreturnfn_t n2 = (noreturnfn_t) voidfn; /* { dg-warning "new qualifier" } */ 33noreturnfn_t n3 = noreturnfn; 34noreturnfn_t n4 = (noreturnfn_t) noreturnfn; 35