| /* PR c/80619 - bad fix-it hint for GCC %lu directive with int argument: %wu |
| { dg-do compile } |
| { dg-options "-Wall -fdiagnostics-show-caret" } */ |
| |
| void T (const char*, ...) __attribute__ ((format (__gcc_diag__, 1, 2))); |
| |
| void test_suggested_modifier (void) |
| { |
| T ("%ld", 0); // { dg-warning "format '%ld' expects argument of type 'long int', but argument 2 has type 'int'" } |
| /* { dg-begin-multiline-output "" } |
| T ("%ld", 0); |
| ~~^ ~ |
| | | |
| | int |
| long int |
| %d |
| { dg-end-multiline-output "" } */ |
| |
| T ("%li", 0); // { dg-warning "format '%li' expects argument of type 'long int', but argument 2 has type 'int'" } |
| /* { dg-begin-multiline-output "" } |
| T ("%li", 0); |
| ~~^ ~ |
| | | |
| | int |
| long int |
| %i |
| { dg-end-multiline-output "" } */ |
| |
| T ("%lu", 0); // { dg-warning "format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'int'" } |
| /* { dg-begin-multiline-output "" } |
| T ("%lu", 0); |
| ~~^ ~ |
| | | |
| | int |
| long unsigned int |
| %u |
| { dg-end-multiline-output "" } */ |
| |
| T ("%lx", 0); // { dg-warning "format '%lx' expects argument of type 'long unsigned int', but argument 2 has type 'int'" } |
| /* { dg-begin-multiline-output "" } |
| T ("%lx", 0); |
| ~~^ ~ |
| | | |
| | int |
| long unsigned int |
| %x |
| { dg-end-multiline-output "" } */ |
| |
| T ("%lli", 0); // { dg-warning "format '%lli' expects argument of type 'long long int', but argument 2 has type 'int'" } |
| /* { dg-begin-multiline-output "" } |
| T ("%lli", 0); |
| ~~~^ ~ |
| | | |
| | int |
| long long int |
| %i |
| { dg-end-multiline-output "" } */ |
| |
| T ("%llo", 0); // { dg-warning "format '%llo' expects argument of type 'long long unsigned int', but argument 2 has type 'int'" } |
| /* { dg-begin-multiline-output "" } |
| T ("%llo", 0); |
| ~~~^ ~ |
| | | |
| | int |
| long long unsigned int |
| %o |
| { dg-end-multiline-output "" } */ |
| |
| T ("%llu", 0); // { dg-warning "format '%llu' expects argument of type 'long long unsigned int', but argument 2 has type 'int'" } |
| /* { dg-begin-multiline-output "" } |
| T ("%llu", 0); |
| ~~~^ ~ |
| | | |
| | int |
| long long unsigned int |
| %u |
| { dg-end-multiline-output "" } */ |
| |
| T ("%llx", 0); // { dg-warning "format '%llx' expects argument of type 'long long unsigned int', but argument 2 has type 'int'" } |
| /* { dg-begin-multiline-output "" } |
| T ("%llx", 0); |
| ~~~^ ~ |
| | | |
| | int |
| long long unsigned int |
| %x |
| { dg-end-multiline-output "" } */ |
| } |
| |