<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/155155>155155</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang] spurious `-Wexit-time-destructors` warning for `thread_local` variable
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jy-lefort
</td>
</tr>
</table>
<pre>
Test case:
```
struct HasDestructor {
~HasDestructor () {}
};
static thread_local HasDestructor hasDestructor;
```
Compile with:
```
$ clang++ -Wexit-time-destructors -c test.cxx
test.cxx:5:35: warning: declaration requires an exit-time destructor [-Wexit-time-destructors]
5 | static thread_local HasDestructor hasDestructor;
| ^
1 warning generated.
```
It seems to me that the warning does not make sense for `thread_local` variables (assuming that "exit-time" is meant as "process exit-time" and not "thread exit-time").
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycU02PozgQ_TXFpZTIGAzhwIF0Ntq9r7THlQOV4B6DM66iPy7z20eQdCbdM62RBllQqPxevXp2WWZ3GolqMFswu8RO0odYP76uPB1DlOQQutf6X2LB1jJB1oBaVqGuSzUscWoF_7a8o0scIkK5BdUgIn77kNAb0NWSL3czU7mDbHthZbHiWpQ-ku3-96G1_gNtf_93xd1JAdU8hOHsPOGzk_6XckHn2Ho7nkBvQW9x9R-9OFmJG2jV3bgZVy0KsazblxcE1bzFkDUGsiabX_hs4-jG0xx21HobrbgwYqSvk4vEaEe8kWN3Z4LZflIWzO7qm0EoH_CPLMHlmeFg_gLVpG9C8UQjRSvUrX927h9BJhoYJeBAKL0VlJ5u2C4Q4xgEB_uFkGlkwuPcTKHu5UGh8MlGZw-eeD5uyzwNM8HCCFrfGget0TEOZEdBO2_W5xhaYsZ3e-zYLYVB60uld2nQ1Trp6qyrssomVKelKZSuMpUmfZ2qKsvKShemUmV17MqsOFBWaFPlVV6RTVytlTZqo3NVGaPStc7T8pgdN8c2P6abNIVc0WCdX3v_NKxDPCWOeaI6NSY1JvH2QJ6X-dH6eq_0PEqxngGrw3RiyJV3LPyDQpz4ZeguCLNDPk_RhYlnOz-7G4W6HcZvjE-m6Ote5MzzDOg96P3JST8d1m0YQO9nIdfP6hzDI7UCer80xqD3196eav09AAD__9j4UCE">