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

    <tr>
        <th>Summary</th>
        <td>
            confusing `-Wunreachable-code` calling a `[[noreturn]]` function with a non-POD return type
        </td>
    </tr>

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

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

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

<pre>
    ```cpp
#include <stdexcept>
#include <string>

[[noreturn]] int func();
[[noreturn]] std::string err();

void f(int i)
{
    if (i == 0) {
    }
    else if (i == 1) {
        func();
    }
    else {
        err();
 }
}
```

```
<source>:15:9: warning: code will never be executed [-Wunreachable-code]
   15 |         err();
      | ^~~~~
```

https://godbolt.org/z/ffKzT8MfP
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx0Us2O8jgQfJrOpQVy2glJDjkEGC6r1c5hpT0nTge88tjIdmBmDjz7ysBqvuFjoih_Vd1dXak-BL23zC2Uayi3WT_Hg_PtpD2f-xNngxs_WliJ26mORxAdkNRWmXlkBLkJceR3xccI8uUJ6LXd3xHRXYesrfMcZ2-h3EK5RW0jTrNVQDVQA3L9EzHEEWQHsrt1Rfb-W43oTk6POAHVqadOiOigSiAiop4wQQhyC3KLAqjBLxSq7f2JTeBHcv6dnI5HzU-afC940Hsn36__W3w36tdXuQlu9oqTjbLLS5BdA7LDc-_t1d0OlRsZz9oYtHxijwMjv7OaI48I5Xrxz2w99-rQD4YXiZwsvSrLS4Rqgz9pxNtWG4Ty5XK5XH6XeojxGNJ_oR3Qbu_GwZm4dH4PtPsE2k3TH59_139Or9nYyrGRTZ9xm1dlUa4oL4rs0DIJoiGviMu6kQ1PRdnkDQ1FTaKiSWW6JUGlqEWVCyIqlqJeNcP101iIUtZQCH7rtVkac3pLszMdwsxtXlJRVZnpBzbhGnEiZfqrZ6Pu99aFqFUAopR936byxTDvAxTC6BDDV8Ooo-FWOTvNIYUPVuKJqyuBqjcmEfpEeZbjRErZidpZPOt4wB6ts4vXv7Z442H8OHI2e9M-mKvjYR6Wyr0B7ZKy-21x9O5fVhFod907AO3uq59a-i8AAP__fjgZMw">