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