| /* { dg-do compile } */ |
| /* { dg-options "-Wcast-function-type" } */ |
| |
| int f(long); |
| |
| typedef int (f1)(long); |
| typedef int (f2)(void*); |
| #ifdef __cplusplus |
| typedef int (f3)(...); |
| typedef void (f4)(...); |
| #else |
| typedef int (f3)(); |
| typedef void (f4)(); |
| #endif |
| typedef void (f5)(void); |
| |
| f1 *a; |
| f2 *b; |
| f3 *c; |
| f4 *d; |
| f5 *e; |
| |
| void |
| foo (void) |
| { |
| a = (f1 *) f; /* { dg-bogus "incompatible function types" } */ |
| b = (f2 *) f; /* { dg-warning "7:cast between incompatible function types" } */ |
| c = (f3 *) f; /* { dg-bogus "incompatible function types" } */ |
| d = (f4 *) f; /* { dg-warning "7:cast between incompatible function types" } */ |
| e = (f5 *) f; /* { dg-bogus "incompatible function types" } */ |
| } |