| /* PR c/86125 - missing -Wbuiltin-declaration-mismatch on a mismatched |
| return type |
| Verify that declarations of file I/O built-ins with different |
| definitions of struct FILE triggers -Wbuiltin-declaration-mismatch |
| when -Wextra is specified. |
| { dg-do compile } |
| { dg-options "-Wall -Wbuiltin-declaration-mismatch" } */ |
| |
| struct FooFile; |
| int fputc (int, struct FooFile*); |
| |
| typedef struct FooFile AlsoFooFile; |
| int fprintf (AlsoFooFile*, const char*, ...); |
| |
| typedef AlsoFooFile* FooFilePtr; |
| int fscanf (FooFilePtr, const char*, ...); |
| |
| /* No warning here (-Wextra not specified). */ |
| struct BarFile; |
| int vfprintf (struct BarFile*, const char*, __builtin_va_list); |
| |
| |
| /* Set -Wextra and verify -Wbuiltin-declaration-mismatch is issued. */ |
| #pragma GCC diagnostic warning "-Wextra" |
| |
| int fputs (const char*, struct BarFile*); /* { dg-warning "mismatch in argument 2 type of built-in function .fputs.; expected .struct FooFile \\\*." } */ |