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

    <tr>
        <th>Summary</th>
        <td>
            TSAN: atomic will cause data race undetected.
        </td>
    </tr>

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

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

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

<pre>
    ### Env
```
clang -v
Ubuntu clang version 15.0.7
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/10
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Selected multilib: .;@m64
```

### Test case

1. data race detected
```
// bad case: data race detected
void testDataRace()
{
    int32_t counter = 0;

    std::thread t1([&counter] {
        if (!counter)
            counter = 1;
 });
    std::thread t2([&counter] {
        if (!counter)
 counter = 2;
    });

    t1.join();
 t2.join();
}
```
2.  not detected when use atomic
```
// For user it is a bad case, but not detected
void testDataRaceAtomic()
{
 std::atomic<int32_t> counter = 0;

    std::thread t1([&counter] {
        if (!counter)
            counter = 1;
    });
 std::thread t2([&counter] {
        if (!counter)
            counter = 2;
    });

    t1.join();
    t2.join();
}
```

As a user's perspective  the behavior is unexpected.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMlcFvozgUxv8ac3kKMjYQOHAgybDaPexhp6s9joztJp517Ag_0s5_vzLQJO20lVYzlaZCNOG9931f8A8sQjB7p3VDig0pdokY8eCH5g8h__32j_dJ79W3hjA-H_DJnQndEdqSki7H9FVa4fawWop_96PDEeaLZz0E4x1kRUrT9dxwJ4a9RsJbeKzKL2W-OsmVNW58XO3duLQcBi0UHL3SNjaefDCPc-l3F1BYq9XODLFEWDeGgbCuN27u6PzoFEjhlFECNfy23YKZpwQa776bYl2aEtZZ0xPW7aUkrFuSXWOxLqMfK599qHw9q3_WVkvU6men3l7yHkeLJk7xFlLCNySnxzJ_4f5e0wu4lvMFwjsdEKQI-racpaAEChiE1KA0Ti6vy7GOsA56oWYR3r45efZGAeqAO4HiLyE1YRVhy40k6838AQDAOOTsC4L0o0M9AOE7oPFn3USMfQEV4S3hLc58YxYliw1h5TJKih08k57k72Gyzp6ankLAzd-td3bxBrLexXa-eScF-8EUt9bsmdUL92sBs_Srj5RVz9Ihe-1yVHltLVkK4Dxelg0eDtrBGDQI9Ecj3wOg80PsHMAgmADiSgTbQj_iM-E3eGhnl1epuNzkJQrfLpAQ_ulX5OT7xfr5nLyR4seQiZX_Rc18buOaRwAIWwc46SGctERz1gB40NDrgzgbP0Q2RqcfTxMHaaIarmpei0Q3WVmxvKLFukgOTaWVEmWd3ed1XfeUyqrivGKUqqrORZUlpmGUcZqzkvKcFUUq9LrOhaT3_X2WVYUiOdVHYWxq7fmY-mGfmBBG3ZSMr7PEil7bMO3TjDn9AFORMBa37aGJM6t-3AeSU2sChqsKGrS6ufvc_hnfdTON8GCsBSnio3J9-43uifc0GQfbHBBPIRIwPTF7g4exT6U_xl3Bnp_-rU6D_6olEtZNmQJh3ZT5vwAAAP__K8NZ6A">