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

    <tr>
        <th>Summary</th>
        <td>
            OpenMP parallel reduction gives wrong result with clang on Windows
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          annop-w
      </td>
    </tr>
</table>

<pre>
    Compiling this program with clang++ -fopenmp -O3 prints wrong result for some number of OMP_NUM_THREADS.
```
#include <iostream>
int main () {
 double sum = 0.0;
#pragma omp parallel for default(none) reduction(+:sum)
        for (int i = 0; i < 1000; ++i) {
 sum += 1.0;
        }
        std::cout << sum << std::endl;
 return 0;
}
```

```
# clang++ --version
clang version 16.0.0
Target: aarch64-pc-windows-msvc
Thread model: posix
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0U8tu4zgQ_JrWpSGDJm09DjrYcYy9ZBPsZrHHgJJaEgd8CCRlz_z9QJITJwHGMCCSRVYVq9kyBNVbogr2R9ifEjnFwflKWuvG9JrUrv1VPTgzKq1sj3FQAUfvei8NXlUcsNHS9sCPwI-Ydm4ka0ZMnwWOXtkY8Oqd7dFTmHTEznkMzhDaydTk0XX4_PTy9vd_T2-vf_3zeDj9uwF2AnaAjN3-65QLZRs9tYQgHpQL0ZM0IB5XWNmIRiqLwAvgJUJ-XAFs3VRrwjAZBHFCtmEgjh-co5e9kejMiKP0UmvSi8WWOjnpCLywztLM6KmdmqicXRSOIA5hMsDLm8ztN58FXsx21KoH4rgMH3DL2DJbo1JfbS7-ZtoTbj9ZfOeF_PR1IcQWxAHEoXFTnOlnhfWS6_AdJ9vqO52nOHmLnzJ4J_6e9x-K8LXa6YV8mDNZ4AXC2xJus80c9oK8St9TBHFAKX0zZLt0bNKrsq27htSES3PbNniSLRrXkp43jy6on9-cJG0l2lKUMqFqm5WcZWWWsWSo9pxnRd01ndh1Tc7FrtiVTSOKPO9yytsuURVnXLBiu2eCbxnb8JrlrJa8K-qMtbyGHSMjld5ofTEb5_tEhTBRle2yUiRa1qTD0iScW7riAgLnc8_4aj6T1lMfYMe0CjHcWaKKmqrnkezTy_2ZfTwo7NWFvrXJvbHQWfx_TSqZvK6GGMcwl5afgZ97FYep3jTOAD_PgrdPOnr3g5oI_LzYDMDPyzV-BwAA__9lQCeg">