format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘const char *’
         
        [-Wformat=]
        
          
            |     9 |   |   printf("hello %i", msg);  /* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */ | 
            |       |   |                 ~^   ~~~ | 
            |       |   |                  |   | | 
            |       |   |                  int const char * | 
            |       |   |                 %s | 
          
        
        --- ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
+++ ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
@@ -6,7 +6,7 @@
 
 void test_mismatching_types (const char *msg)
 {
-  printf("hello %i", msg);  /* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */
+  printf("hello %s", msg);  /* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */
 
 /* { dg-begin-multiline-output "" }
    printf("hello %i", msg);
       
      
        format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’
         
        [-Wformat=]
        
          
            |    20 |   |   printf("hello %s", 42);  /* { dg-warning "format '%s' expects argument of type 'char \\*', but argument 2 has type 'int'" } */ | 
            |       |   |                 ~^   ~~ | 
            |       |   |                  |   | | 
            |       |   |                  |   int | 
            |       |   |                  char * | 
            |       |   |                 %d | 
          
        
        --- ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
+++ ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
@@ -17,7 +17,7 @@
    { dg-end-multiline-output "" } */
 
 
-  printf("hello %s", 42);  /* { dg-warning "format '%s' expects argument of type 'char \\*', but argument 2 has type 'int'" } */
+  printf("hello %d", 42);  /* { dg-warning "format '%s' expects argument of type 'char \\*', but argument 2 has type 'int'" } */
 /* { dg-begin-multiline-output "" }
    printf("hello %s", 42);
                  ~^   ~~
       
      
        format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘long int’
         
        [-Wformat=]
        
          
            |    30 |   |   printf("hello %i", (long)0);  /* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'long int' " } */ | 
            |       |   |                 ~^   ~~~~~~~ | 
            |       |   |                  |   | | 
            |       |   |                  int long int | 
            |       |   |                 %li | 
          
        
        --- ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
+++ ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
@@ -27,7 +27,7 @@
                  %d
    { dg-end-multiline-output "" } */
 
-  printf("hello %i", (long)0);  /* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'long int' " } */
+  printf("hello %li", (long)0);  /* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'long int' " } */
 /* { dg-begin-multiline-output "" }
    printf("hello %i", (long)0);
                  ~^   ~~~~~~~
       
      
        format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘int’
         
        [-Wformat=]
        
          
            |    42 |   |   printf ("arg0: %i  arg1: %s arg 2: %i", /* { dg-warning "29: format '%s'" } */ | 
            |       |   |                            ~^ | 
            |       |   |                             | | 
            |       |   |                             char * | 
            |       |   |                            %d | 
            |    43 |   |           100, 101, 102); | 
            |       |   |                ~~~            | 
            |       |   |                | | 
            |       |   |                int | 
          
        
        --- ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
+++ ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
@@ -39,7 +39,7 @@
 
 void test_multiple_arguments (void)
 {
-  printf ("arg0: %i  arg1: %s arg 2: %i", /* { dg-warning "29: format '%s'" } */
+  printf ("arg0: %i  arg1: %d arg 2: %i", /* { dg-warning "29: format '%s'" } */
           100, 101, 102);
 /* { dg-begin-multiline-output "" }
    printf ("arg0: %i  arg1: %s arg 2: %i",
       
      
        format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘int’
         
        [-Wformat=]
        
          
            |    59 |   |   printf ("arg0: %i  arg1: %s arg 2: %i", /* { dg-warning "29: format '%s'" } */ | 
            |       |   |                            ~^ | 
            |       |   |                             | | 
            |       |   |                             char * | 
            |       |   |                            %d | 
            |    60 |   |           100, i + j, 102); | 
            |       |   |                ~~~~~          | 
            |       |   |                  | | 
            |       |   |                  int | 
          
        
        --- ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
+++ ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
@@ -56,7 +56,7 @@
 
 void test_multiple_arguments_2 (int i, int j)
 {
-  printf ("arg0: %i  arg1: %s arg 2: %i", /* { dg-warning "29: format '%s'" } */
+  printf ("arg0: %i  arg1: %d arg 2: %i", /* { dg-warning "29: format '%s'" } */
           100, i + j, 102);
 /* { dg-begin-multiline-output "" }
    printf ("arg0: %i  arg1: %s arg 2: %i",
       
      
        format ‘%d’ expects a matching ‘int’ argument
         
        [-Wformat=]
        
          
            |    75 |   |   printf ("before the fmt specifier" /* { dg-warning "11: format '%d' expects a matching 'int' argument" } */ | 
            |       |   |           ^~~~~~~~~~~~~~~~~~~~~~~~~~ | 
          
        
        
          format string is defined here
          
            
              |    81 |   |           "%" | 
              |       |   |            ~~ | 
              |    82 |   |           "d" /* { dg-message "12: format string is defined here" } */ | 
              |       |   |           ~^ | 
              |       |   |            | | 
              |       |   |            int | 
            
          
         
       
      
        format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘const char *’
         
        [-Wformat=]
        
          
            |    99 |   |   printf("hello \x25\x69", msg);  /* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */ | 
            |       |   |                 ~~~~^~~~   ~~~ | 
            |       |   |                     |      | | 
            |       |   |                     int    const char * | 
            |       |   |                 \x25s | 
          
        
        --- ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
+++ ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
@@ -96,7 +96,7 @@
 {
   /* "%" is \x25
      "i" is \x69 */
-  printf("hello \x25\x69", msg);  /* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */
+  printf("hello \x25s", msg);  /* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */
 
 /* { dg-begin-multiline-output "" }
    printf("hello \x25\x69", msg);
       
      
        format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘const char *’
         
        [-Wformat=]
        
          
            |   114 |   |   printf("hello \045\151", msg);  /* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */ | 
            |       |   |                 ~~~~^~~~   ~~~ | 
            |       |   |                     |      | | 
            |       |   |                     int    const char * | 
            |       |   |                 \045s | 
          
        
        --- ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
+++ ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
@@ -111,7 +111,7 @@
 {
   /* "%" is octal 045
      "i" is octal 151.  */
-  printf("hello \045\151", msg);  /* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */
+  printf("hello \045s", msg);  /* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */
 
 /* { dg-begin-multiline-output "" }
    printf("hello \045\151", msg);
       
      
        format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘const char *’
         
        [-Wformat=]
        
          
            |   129 |   |   printf("prefix"  "\x25"  "\151"  "suffix",  /* { dg-warning "format '%i'" } */ | 
            |       |   |          ^~~~~~~~ | 
            |   130 |   |          msg); | 
            |       |   |          ~~~ | 
            |       |   |          | | 
            |       |   |          const char * | 
          
        
        
          format string is defined here
          
            
              |   129 |   |   printf("prefix"  "\x25"  "\151"  "suffix",  /* { dg-warning "format '%i'" } */ | 
              |       |   |                     ~~~~~~~~^~~~ | 
              |       |   |                             | | 
              |       |   |                             int | 
              |       |   |                     \x25"  "s | 
            
          
          --- ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
+++ ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
@@ -126,7 +126,7 @@
 {
   /* "%" is \x25 in hex
      "i" is \151 in octal.  */
-  printf("prefix"  "\x25"  "\151"  "suffix",  /* { dg-warning "format '%i'" } */
+  printf("prefix"  "\x25"  "s"  "suffix",  /* { dg-warning "format '%i'" } */
          msg);
 /* { dg-begin-multiline-output "" }
    printf("prefix"  "\x25"  "\151"  "suffix",
         
       
      
        pointer targets in passing argument 1 of ‘printf’ differ in signedness
         
        [-Wpointer-sign]
        
          
            |   151 |   |   printf(u8"hello %i", msg);/* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */ | 
            |       |   |          ^~~~~~~~~~~~ | 
            |       |   |          | | 
            |       |   |          unsigned char * | 
          
        
        
          expected ‘const char * restrict’ but argument is of type ‘unsigned char *’
          
            
              |   110 |   | extern int printf (const char *restrict, ...); | 
              |       |   |                    ^~~~~~~~~~~~~~~~~~~~ | 
            
          
         
       
      
        format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘const char *’
         
        [-Wformat=]
        
          
            |   151 |   |   printf(u8"hello %i", msg);/* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */ | 
            |       |   |                   ~^   ~~~ | 
            |       |   |                    |   | | 
            |       |   |                    int const char * | 
            |       |   |                   %s | 
          
        
        --- ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
+++ ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
@@ -148,7 +148,7 @@
 
 void test_u8 (const char *msg)
 {
-  printf(u8"hello %i", msg);/* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */
+  printf(u8"hello %s", msg);/* { dg-warning "format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */
 /* { dg-begin-multiline-output "" }
    printf(u8"hello %i", msg);
                    ~^   ~~~
       
      
        format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘long int’
         
        [-Wformat=]
        
          
            |   163 |   |   printf ("foo %s bar", long_i + long_j); /* { dg-warning "17: format '%s' expects argument of type 'char \\*', but argument 2 has type 'long int'" } */ | 
            |       |   |                ~^       ~~~~~~~~~~~~~~~ | 
            |       |   |                 |              | | 
            |       |   |                 char *         long int | 
            |       |   |                %ld | 
          
        
        --- ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
+++ ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
@@ -160,7 +160,7 @@
 
 void test_param (long long_i, long long_j)
 {
-  printf ("foo %s bar", long_i + long_j); /* { dg-warning "17: format '%s' expects argument of type 'char \\*', but argument 2 has type 'long int'" } */
+  printf ("foo %ld bar", long_i + long_j); /* { dg-warning "17: format '%s' expects argument of type 'char \\*', but argument 2 has type 'long int'" } */
 /* { dg-begin-multiline-output "" }
    printf ("foo %s bar", long_i + long_j);
                 ~^       ~~~~~~~~~~~~~~~
       
      
        field width specifier ‘*’ expects argument of type ‘int’, but argument 2 has type ‘long int’
         
        [-Wformat=]
        
          
            |   175 |   |   printf (" %*.*d ", l, i1, i2); /* { dg-warning "14: field width specifier '\\*' expects argument of type 'int', but argument 2 has type 'long int'" } */ | 
            |       |   |             ~^~~~    ~ | 
            |       |   |              |       | | 
            |       |   |              int     long int | 
          
        
       
      
        field width specifier ‘*’ expects argument of type ‘int’, but argument 3 has type ‘long int’
         
        [-Wformat=]
        
          
            |   188 |   |   __builtin_sprintf (d, " %*ld ", foo, foo); /* { dg-warning "28: field width specifier '\\*' expects argument of type 'int', but argument 3 has type 'long int'" } */ | 
            |       |   |                           ~^~~    ~~~ | 
            |       |   |                            |      | | 
            |       |   |                            int    long int | 
          
        
       
      
        field width specifier ‘*’ expects argument of type ‘int’, but argument 3 has type ‘long int’
         
        [-Wformat=]
        
          
            |   196 |   |   __builtin_sprintf (d, " %*ld ", foo + bar, foo); /* { dg-warning "28: field width specifier '\\*' expects argument of type 'int', but argument 3 has type 'long int'" } */ | 
            |       |   |                           ~^~~    ~~~~~~~~~ | 
            |       |   |                            |          | | 
            |       |   |                            int        long int | 
          
        
       
      
        field precision specifier ‘.*’ expects argument of type ‘int’, but argument 3 has type ‘long int’
         
        [-Wformat=]
        
          
            |   207 |   |   __builtin_sprintf (d, " %.*ld ", foo, foo); /* { dg-warning "29: field precision specifier '\\.\\*' expects argument of type 'int', but argument 3 has type 'long int'" } */ | 
            |       |   |                           ~~^~~    ~~~ | 
            |       |   |                             |      | | 
            |       |   |                             int    long int | 
          
        
       
      
        field precision specifier ‘.*’ expects argument of type ‘int’, but argument 3 has type ‘long int’
         
        [-Wformat=]
        
          
            |   215 |   |   __builtin_sprintf (d, " %.*ld ", foo + bar, foo); /* { dg-warning "29: field precision specifier '\\.\\*' expects argument of type 'int', but argument 3 has type 'long int'" } */ | 
            |       |   |                           ~~^~~    ~~~~~~~~~ | 
            |       |   |                             |          | | 
            |       |   |                             int        long int | 
          
        
       
      
        spurious trailing ‘%’ in format
         
        [-Wformat=]
        
          
            |   226 |   |   printf("hello world %"); /* { dg-warning "23: spurious trailing" } */ | 
            |       |   |                       ^ | 
          
        
       
      
        empty left precision in gnu_strfmon format
         
        [-Wformat=]
        
          
            |   236 |   |   strfmon (s, m, "%#.5n", d); /* { dg-warning "20: empty left precision in gnu_strfmon format" } */ | 
            |       |   |                    ^ | 
          
        
       
      
        empty precision in gnu_strfmon format
         
        [-Wformat=]
        
          
            |   242 |   |   strfmon (s, m, "%#5.n", d); /* { dg-warning "22: empty precision in gnu_strfmon format" } */ | 
            |       |   |                      ^ | 
          
        
       
      
        repeated '+' flag in format
         
        [-Wformat=]
        
          
            |   251 |   |   printf ("%++d", i); /* { dg-warning "14: repeated '\\+' flag in format" } */ | 
            |       |   |              ^ | 
          
        
       
      
        conversion lacks type at end of format
         
        [-Wformat=]
        
          
            |   260 |   |   printf (" %h"); /* { dg-warning "14:conversion lacks type at end of format" } */ | 
            |       |   |              ^ | 
          
        
       
      
        embedded ‘\0’ in format
         
        [-Wformat-contains-nul]
        
          
            |   269 |   |   printf (" \0 "); /* { dg-warning "13:embedded" "warning for embedded NUL" } */ | 
            |       |   |             ^~ | 
          
        
       
      
        format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘const char *’
         
        [-Wformat=]
        
          
            |   279 |   |   printf("hello " INT_FMT " world", msg);  /* { dg-warning "10: format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */ | 
            |       |   |          ^~~~~~~~                   ~~~ | 
            |       |   |                                     | | 
            |       |   |                                     const char * | 
          
        
        
          format string is defined here
          
            
              |   278 |   | #define INT_FMT "%i" /* { dg-message "19: format string is defined here" } */ | 
              |       |   |                  ~^ | 
              |       |   |                   | | 
              |       |   |                   int | 
              |       |   |                  %s | 
            
          
          --- ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
+++ ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
@@ -275,7 +275,7 @@
 
 void test_macro (const char *msg)
 {
-#define INT_FMT "%i" /* { dg-message "19: format string is defined here" } */
+#define INT_FMT "%s" /* { dg-message "19: format string is defined here" } */
   printf("hello " INT_FMT " world", msg);  /* { dg-warning "10: format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */
 /* { dg-begin-multiline-output "" }
    printf("hello " INT_FMT " world", msg);
         
       
      
        format ‘%u’ expects argument of type ‘unsigned int’, but argument 2 has type ‘const char *’
         
        [-Wformat=]
        
          
            |   299 |   |   printf("hello %" PRIu32 " world", msg);  /* { dg-warning "10: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'const char \\*' " } */ | 
            |       |   |          ^~~~~~~~~                  ~~~ | 
            |       |   |                                     | | 
            |       |   |                                     const char * | 
          
        
        
          format string is defined here
          
            
              |   298 |   | #define PRIu32 "u" /* { dg-message "17: format string is defined here" } */ | 
              |       |   |                 ^ | 
              |       |   |                 | | 
              |       |   |                 unsigned int | 
            
          
         
       
      
        format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘const char *’
         
        [-Wformat=]
        
          
            |   317 |   | #define FMT_STRING "hello %i world" /* { dg-line test_macro_3_macro_line } */ | 
            |       |   |                    ^~~~~~~~~~~~~~~~ | 
          
        
        
          format string is defined here
          
            
              |   317 |   | #define FMT_STRING "hello %i world" /* { dg-line test_macro_3_macro_line } */ | 
              |       |   |                           ~^ | 
              |       |   |                            | | 
              |       |   |                            int | 
              |       |   |                           %s | 
            
          
          --- ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
+++ ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
@@ -314,7 +314,7 @@
 
 void test_macro_3 (const char *msg)
 {
-#define FMT_STRING "hello %i world" /* { dg-line test_macro_3_macro_line } */
+#define FMT_STRING "hello %s world" /* { dg-line test_macro_3_macro_line } */
   /* { dg-warning "20: format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*'" "" { target *-*-*} .-1 } */
   printf(FMT_STRING, msg);  /* { dg-message "10: in expansion of macro 'FMT_STRING" } */
 /* { dg-begin-multiline-output "" }
         
       
      
        format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘const char *’
         
        [-Wformat=]
        
          
            |   341 |   | #define FMT_STRING "hello %i world" /* { dg-warning "20: format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */ | 
            |       |   |                    ^~~~~~~~~~~~~~~~ | 
          
        
        
          format string is defined here
          
            
              |   341 |   | #define FMT_STRING "hello %i world" /* { dg-warning "20: format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */ | 
              |       |   |                           ~^ | 
              |       |   |                            | | 
              |       |   |                            int | 
              |       |   |                           %s | 
            
          
          --- ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
+++ ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
@@ -338,7 +338,7 @@
 
 void test_macro_4 (const char *msg)
 {
-#define FMT_STRING "hello %i world" /* { dg-warning "20: format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */
+#define FMT_STRING "hello %s world" /* { dg-warning "20: format '%i' expects argument of type 'int', but argument 2 has type 'const char \\*' " } */
   printf(FMT_STRING "\n", msg);  /* { dg-message "10: in expansion of macro 'FMT_STRING" } */
 /* { dg-begin-multiline-output "" }
  #define FMT_STRING "hello %i world"
         
       
      
        format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’
         
        [-Wformat=]
        
          
            |   363 |   |   __builtin_printf(" %" "d ", 0.5); /* { dg-warning "20: format .%d. expects argument of type .int., but argument 2 has type .double." } */ | 
            |       |   |                    ^~~~       ~~~ | 
            |       |   |                               | | 
            |       |   |                               double | 
          
        
        
          format string is defined here
          
            
              |   363 |   |   __builtin_printf(" %" "d ", 0.5); /* { dg-warning "20: format .%d. expects argument of type .int., but argument 2 has type .double." } */ | 
              |       |   |                      ~~~~^ | 
              |       |   |                          | | 
              |       |   |                          int | 
              |       |   |                      %" "f | 
            
          
          --- ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
+++ ../../src/gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
@@ -360,7 +360,7 @@
 
 void test_non_contiguous_strings (void)
 {
-  __builtin_printf(" %" "d ", 0.5); /* { dg-warning "20: format .%d. expects argument of type .int., but argument 2 has type .double." } */
+  __builtin_printf(" %" "f ", 0.5); /* { dg-warning "20: format .%d. expects argument of type .int., but argument 2 has type .double." } */
                                     /* { dg-message "26: format string is defined here" "" { target *-*-* } .-1 } */
   /* { dg-begin-multiline-output "" }
    __builtin_printf(" %" "d ", 0.5);
         
       
      
        format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’
         
        [-Wformat=]
        
          
            |   385 |   |   __builtin_printf(a, 0.5); /* { dg-warning "20: format .%d. expects argument of type .int., but argument 2 has type .double." } */ | 
            |       |   |                    ^  ~~~ | 
            |       |   |                       | | 
            |       |   |                       double |