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

    <tr>
        <th>Summary</th>
        <td>
            OpenMP atomic operation does not work properly on Windows with clang
        </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>
    The following program produces wrong result with -O3
```
#include <iostream>
#include <omp.h>
int main () {
        double sum = 0.0;
        int i;
#pragma omp parallel for default(none) private(i) shared(sum)
        for (i = 0; i < 1000; ++i) {
                #pragma omp atomic
                sum += 1.0;
 } 
        std::cout << sum << std::endl;
        return 0;
}
```

```
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/eJxsU01v2zAM_TX0hUigSLbjHHxImuU2dIcCOysWY2uTJUMf8frvBzlpu3YRBEjUo_jIR1CGoHtL1EJ1gOpYyBQH51tprZtWc3F26rV9GQgvzhg3a9vj5F3v5ZhPlToKOHtne_QUkok46zjg6lkAOwLbQ83u-2ZyoW1nkiIE8aRdiJ7kCOLbI9iN03p4x7SNOEptEXgDfIewPdwAvC_l0tkQhjQiiCOyNQPxxSXH0O-vwMXkZT9KdOOEk_TSGDJ4cR4VXWQyEXhjnaVMN3l9lZGANzqbYZCeFPAmpBH47jNNjpAdb3mAOGC-PuGGscUCfgB-0A-reFufk5PRjbp77LkUzA-Za_NvzbA94ucfISoQexD7zqWYM8pJ3fS6Xd9wssr8J56nmLzFDwbYHh83-dFjZ6Tt8Uo-aGdxU69zfxbkRfqeIog9Sum7oS5XU7eatVVuDqsxXO9lvwyepMLRKTLZeXJB__lCVahWqJ3YyYLaTb3jrN41m6oY2rJmxHhXsrIuK75tyq6U4txtWCdVtd3KQrecccGaTcUEF6Jas6rhF3XhohZlxc8EJaNRarM25jqune8LHUKiti7rXVkYeSYTlhHi3NKMCwic54nybf6zOqc-QMmMDjF8RIk6GmqfJ7Lff9zbjG4iL2PWSTkKaF3E2fnfeeAm8uYVncWfN4Fu47aIWyRv2iHGKeQm8hPwU6_jkM7rzo3AT5nyfqwm735RF4GflkQD8NNSyN8AAAD__wX5KPI">