<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/155665>155665</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            -Wformat-signedness incorrectly warns when a bitfield field is passed to printf
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang:frontend,
            clang:diagnostics
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          ahatanak
      </td>
    </tr>
</table>

<pre>
    $ cat test.c
```
int printf(const char *, ...) __attribute__((__format__(__printf__, 1, 2)));

struct S {
  unsigned int bf : 16;
  unsigned char c;
};

struct S s;

void foo(void) {
 printf("%x\n", s.bf);
  printf("%x\n", s.c);
}
```

$ clang test.c -c -o -Wformat -Wformat-signedness 
test.c:11:18: warning: format specifies type 'unsigned int' but the argument has type 'int', which differs in signedness [-Wformat-signedness]
   11 |   printf("%x\n", s.bf);
      | ~~     ^~~~
      |           %x
1 warning generated.

Both `s.bf` and `s.c` are promoted to `int` as a result of default argument promotion. clang silences the warning only when the latter is passed.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyEVM-SuzYMfhpz0YQBE_4dOLBJ8wI99MgYWwa3xM7YYrd7ybN3DDS7v_Y3LeNxJEuWvu-TJyIEM1nEjpVvrLwmYqXZ-U7MgoQVfySjU58d42eQgoAwUCpZ1rMqO1bWG0vw8MaSZryRzgYCOQsPjPeMXyBNU8ZbGAZB5M24Eg4D4w3jzTBo5--CNn8Y9hrRuUAeN854e6ziLTbN-kB-lQS_AqvjCcBqN_gKIopRAyt6yKs9_1t0AySPMvX13_XC6-jdGQXaOcabaEbsR7MXScY54-WfrLzYzbxASEf9wgn_nSm_CNXXf2gZV9R6EXY61IaThJOD02-7WC_jtFOzGAKwrD9GU_R5HrcmCvEhvDV2iuZxOTxQGm0wAH0-EBivvwvIeA3jSkAzgvDTekdLMIuv5D0n0viYjZxBGa3RBzAWvqMp334CkpXXTRvIc2D1Bf5HpR_0jF-883zuZvnL8_n8IfL1bZWyPv-bPUxo0QtCle4CvzmagVXZ1qPKQFi1u3LzPMLDu7sjVEAuRiLrGAkgwGNYFwKnQaEW0XwJtd8yzqbH_IJZ0Mqo9YwvNM4un_Axo91OF0GEHkyAhwgBVZqorlBt0YoEu7wuqyKvqrZI5g6zXGit8rbQTdG2ZZHnasxlI5tzW2dKJKbjGS-zhtd5fT6XRVpVWIy6rduWZ5U-N-yc4V2YJV2W93vq_JSYEFbs8rKsqjJZxIhL2P4GON8IsKLX3llCq_axfAsoIybrAhkZYqy8Jr6LdU_jOgV2zhYTKHx1IkMLdj97usZK5z1KirIIb8MujoDRkDa4KNj3l0RxKPvLSVa_dDPRI7CiZ_zG-G0yNK9jKt2d8VvsfvycHt79jpIYv22kA-O3g_d7x_8KAAD__4LGiOY">