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

    <tr>
        <th>Summary</th>
        <td>
            Switch warnings with -Weverything on clang 18
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    With clang 18, when using the -Weverything flag with code involving switches, I get switch-related warnings no matter what I do.

If the switches are exhaustive. `clang -Weverything` complains the switch is missing a `default`:

```
$ cat test.c 
#include <assert.h>


typedef enum {
        ZERO = 0,
        ONE = 1,
} Number;

int test(Number number);

int test(Number number)
{
        switch (number)
        {
                case ZERO:
                        return 0;
                case ONE:
 return 1;
        }

        assert(0);
 return -1;
}
$ clang -c test.c  -o test.o -Wall -Weverything
test.c:13:2: warning: 'switch' missing 'default' label [-Wswitch-default]
   13 |         switch (number)
      | ^
1 warning generated.
```

When `default` is present, clang complains that the switch is exhaustive and `default` shouldn't be used:

```
$ cat test.c
typedef enum {
        ZERO = 0,
 ONE = 1,
} Number;

int test(Number number);

int test(Number number)
{
        switch (number)
        {
 case ZERO:
                        return 0;
                case ONE:
                        return 1;
                default:
 assert(0);
                        return -1;
 }

        assert(0);
        return -1;
}

$ clang -c test.c  -o test.o -Wall -Weverything
test.c:19:3: warning: default label in switch which covers all enumeration values [-Wcovered-switch-default]
 19 |                 default:
      |                 ^
1 warning generated.
```

What can I do to make clang happy?

Environment:

```
$ clang --version
clang version 18.1.0 (Fedora 18.1.0~rc4-2.fc40)
Target: x86_64-redhat-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Configuration file: /etc/clang/clang.cfg
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUVsFvq7gT_mucywgENgnkwCFtGqmXVvr9Vqq0l5UDA_itsSPbJO1l__aVwaRJ-vp2-1Z7WCsCMv78eTwzHwy3VrQKsSTLO7LcLvjgOm1K3fNvol7sdf1WvgjXQSW5aiEtCL2HU4cKBitUC65DiF7wiObNdd7QSN7CaVyhawShjloe_YQ9CVd1aD3BI7TogiUyKLnDGk7cKKFaC0pDz51DA6eOO3iEWsck2ZJkM10fm3HbmRC4QcDXjg_WiSPGQFbJ5O2lY2SVQKX7g-RC2Yv1ICz0wo6H4X5pjQ0fpCOrhLDN5bbeMv2mvzSDijtwaF1cwWxkQlVyqBEIu-fWonFxR9jDFdF4dW8HrLEBVEMPJL-brBDGrw__ewbCtpAQen899fz0MM6k5xmSb-Fp6PdoCLu73EOoyT9Ci2ke1ASj6y8gwx43HobwEVrcIGfAhxXzqLjF8YDnAN8i5mHQDUZBcnb2u1TPTw_vTGFJ-mEJybeXB57NU44ILZLLoMw00TvP-3qf-Km-qjn7EOnpUUP0wqW8Lr0p3yOSsE3KCNtQwjZzxftHQvMpoITm53okNJ-rkeYg-R4lkOVd9BKUM08ut-czpQxIfg9_M0keSpahONPZH2hRofGajL9f-eP1xb8ErvTipXQwaFE5L_IpRpea82q5Et67aoGr-obNdnqQtSI0d7BHGCzWX1Hkz6rsvyevf1VPP2b6KLN5zIk8E30itB_zX-jviwL-lOeG5h-reU3Yht2oORw-SFaoOZunTlT-w3hEY8ET-7L0UhNawZHLAe0k8BGCdfSZ0NP1lcw_DXqolI_In1c9d1BxNX6Vwfkv9e8YAtjxw-GNsN0l_kEdhdGq9--EvxbvlIfIh0doNU1MxmCCtIjTOPGy2GGtDQ-GP0yVRTRuqiw5C-UXblr0u8JrsfptlUUG6467SAo1vEatGgKsM8hr6HWN0oMP2orX0Ggo67iUWG-FmV7Su8EaQnd7EZy716oR7RAy2AiJAYeuInQ3-j7f46ppb46-qEtWr9maL7BM8zTJaL5O6aIr90W-YjXNeNKsMeVNwYqc0YzuE15UyHEhSprQLGFplmbLdEnjZEmrdJ0lVUoTxuuGZAn2XMhYymMfa9MuhLUDlsWSMrYYC9OOPR-lwUvq2z9Teny0H1pLskQK6-w7gxNOYvn_UMtzuzY2e1c9oFbndnExGFl2zh2sTz_dEbprheuGfVzpntCd5w636GD0N6wcobvRVUvobvT2zwAAAP__-Z3-Nw">