<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">