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

    <tr>
        <th>Summary</th>
        <td>
            [clang-tidy] clang-analyzer-deadcode.DeadStores false positive
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    `clang-analyzer-deadcode.DeadStores` gives a false positive when a store is followed by another store inside a try-catch.

In my example below, if `func` throws then the original store will indeed be read from.

```
$ clang-tidy-15 --version
Ubuntu LLVM version 15.0.0

  Optimized build.
  Default target: x86_64-pc-linux-gnu
  Host CPU: skylake
```
```
$ cat main.cpp
#include <iostream>
#include <stdexcept>

int func() {
  throw std::exception();
}

int main() {
  int i;
  i = 0;
  try {
    i = func();
  } catch (...) {
  }
  std::cout << i << std::endl;
}
```
```
$ clang-tidy-15 -checks=clang-analyzer-* main.cpp
Error while trying to load a compilation database:
Could not auto-detect compilation database for file "main.cpp"
No compilation database found in /home/sweemer or any parent directory
fixed-compilation-database: Error while opening fixed database: No such file or directory
json-compilation-database: Error while opening JSON database: No such file or directory
Running without flags.
1 warning generated.
/home/sweemer/main.cpp:10:3: warning: Value stored to 'i' is never read [clang-analyzer-deadcode.DeadStores]
  i = 0;
  ^   ~
/home/sweemer/main.cpp:10:3: note: Value stored to 'i' is never read
  i = 0;
  ^   ~
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyVVVuPmzgU_jXk5QgEJuTykId0MqNt1W1XW7WvK4MP4I5jI9tMkv76PYbcmqbqjOSA8bl837k5pRGHVTRLK8V1E3PN1eEH2lggF5URmGxo88Ubi46UoJEv6IBDzZVD6IyTnk5g16KmUxf0QDqojVJmhwLKA3BtfIv2JNROCiRdbw9xxX3VJlG6idL1-HyvYXsA3PNtpxBKJC8RewBZA6HXva4CCd9as3P0IlB6gLGykUT8CLGTShGOwICPYCkAqK3Z_gREfo5r_GRTGDPgpTjEWQFx_ILWSaNHha9lr30PHz9--xuOAsiKJE3Sa68Anzsvt_JHgO6lEsnpfIM175UHz22DPsrXsF_M_ptN466KldT9Pm50f1L-yzgPD_98DWru-aD4M95nfScI7mHLpU6qrjud5lJXqqesR_mDJNeUkW2UP94TOy9wX2HnL_LhKbWHIf1sEbElRPN3J65DMSjzgsjSGq1D2gbNKD8qRvPNrb9A81d_QSLPZvRNtDaQXp1Q51wbnFQu9K50CRaGLgMSJUlyA3ZmBZcIKtP7kApag-dhc4lPC3UnqD_X5efmqlqsnh3Rvhm7iK1vyvdorbE0YJLmgSKXugFvQBlqag6V2XZS8ZBvENzzkjsMPAfLB9MrATR9wHtvaKI9Vv6uCc2rhTogRIyd4Rkb_XwyvzPqtaB6kdFTa7ZIL7dD3NKskzuuD9Bxi1ROIS0hG3sY_dVyjyK-chlfUYfreE2HOgQ8WFwHCMTJ9VTVgTTp30B8d-T1LQgfvnz-9BaAf3s92O2kb0O_1Io37jjsGey4HaQNarTc4-ka-CVRtDunO19n1OXrPKAfHYTtN656HG82ESofsbmkX7hlNdJNNN5vUfHuFRd4sfn9VEXFI4SBeHwjVeovfDXP18OfJmgiVrlY5ks-8dIrXJ0DDaNEAcGfw775s5r0Vq1a7zsXJoU90Wqoin2ZUMPQh1Ivp1fcWfOdyk6f0rmeMsieimLGskm7WizKdM7znC-LeTUXVZGXdVEyzERW8QXOJorT35cLhGmSNO5gcBGmqthM5IqljKUFy9Ipm6fTJGNpXRSLrGRFUYllGk1TpHyrJPBIjG0mdjVQKvvGkVBJ591FyJ2TjcYhP8E_TXxr7OpYu8kAvRqo_w-yZXB7">