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

    <tr>
        <th>Summary</th>
        <td>
            clang -O0 miscompilation on aarch64-darwin
        </td>
    </tr>

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

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

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

<pre>
    Reproducer:

```c
#include <stdio.h>
#include <stdint.h>
#include <stdatomic.h>
#include <stdbool.h>

int main (void) {
    _Atomic uint32_t x = 42;
 uint32_t y = 42;

    bool success = atomic_compare_exchange_strong(&x, &y, 43);
    printf("# CAS\n");
    printf("success=%u\n", (int) success);
    printf("old=%u\n", y);
    printf("x=%u\n", x);

    printf("# Swap\n");
    y = atomic_exchange(&x, 2);
 printf("x=%u\n", x);
    printf("y=%u\n", y);

 printf("# Fetch-Add\n");
    y = atomic_fetch_add(&x, 2);
 printf("x=%u\n", x);
    printf("y=%u\n", y);
 fflush(stdout);
}
```

The correct runtime output should be:

```
# CAS
success=1
old=42
x=43
# Swap
x=2
y=43
# Fetch-Add
x=4
y=2
```

On a macos-14 m1 machine, using `cc` from apple sdk compiles the given reproducer fine. However, when using `clang` compiled from `llvmorg-18.1.4`, the runtime output of `clang -O0 test.c -o test` is:

```
# CAS
success=1
old=42
x=536870912
# Swap
x=536870912
y=43
# Fetch-Add
x=536870912
y=2
```

Problematic `clang` version:

```
clang version 18.1.4 (git@github.com:llvm/llvm-project.git e6c3289804a67ea0bb6a86fadbe454dd93b8d855)
Target: arm64-apple-darwin23.4.0
Thread model: posix
InstalledDir: /Users/terrorjack/workspace/llvm-project/build/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEVl2P4jYU_TXm5YoosZ0PHniYHYravmzV3T4jx75JvJPYyHZm4N9XThhgmYVupUqVUBJzj4_PPdfXifBetwZxTfJPJN8sxBg669Zf0TnrfhfyZVFbdVz_iXtn1SjREfZE0g1J369FOv_kaUyZNrIfFQJhzz4obZOOsF_uRU14FBbBDlo-QtTW9tfx6apNgEFoA4RWr1YrQldAyk9zEABg9zQRw6hNYHQX4ACEbYBTwt5R59DxNnShiYuDH6VE7yfUrHcn7bAXDnd4kJ0wLe58cNa0hFaEFgdCn4HQ4hjvnBG6uiwKAHunTWgmKCWUwfPTF5I_m2l0H3kSQdiG0Hw8T4gLVdqEaMA75AGL7dVHhuOjGYeP-MM1_n5eX97E_k5ix2sv3z28Mu_7Cf9Gzq2Q4z-k-4MlovYtBtktn5T6mQSaCN4Jpf6XDKBp-tF3hFY-KDuG77IrNzdNfJ311w5BWudQBnCjCXpAsGPYjwF8Z8deQY33DoNzs07bdxpcdmg2_zFvNk7nUcybs8u8aXucIyfQ8QZ0qcOF44KkD5L7bEDAIKT1y4zDkMXnThuM_o1emxbikSZJkULj7ABiv-8RvHqB2Nu6Rw-hQ2j1Kxpw58MRGm0wgV_tG76ii2RvHZorxl6YNpKeWNTMToq0718H69plViVZwqNa-jwtcWO9bc48sPycQkAfEglLOz1Fau3_26rkrKjKdJXRe8W5AfxEkX4w41Gx_nC27nEQQcvvTHxF57U1j9OdrTpBYbY3noqtDoSnrQ7dWCfSDoQ9xRoQuo235d7ZbyhD0uoAWEhGq1WVclGUKNK6LkRVNELVyHOu1IrVlaryPPbW3DrCtRgIewLhhoIvp92zVMK9aUNZwpP0vcUcCgWDVdhH9N56fZhDvxkfRN-j2uj4ygVCt395dJ7QbZjezd-EfCF0-2bdi98LiTfCCd3Wo-5VvGtz48xCrZlasZVY4DorM8bKghbVoltzmfNVXja8alCsKo5CNSxlsqgUr_JcLfSappSnPCuzMs_SKinKvOJlWTY8k1zyFeEpDkL3SRSTWNcutPcjrqtVltFFL2rs_fStQelcR0rjZ4dbT-LrsfWEp732wV8Ygg49ri97ftB-7h8RYk2tASGc7Ap-sngxun7dhbCfOoFuCd1e1Xn26aNdk87o7yT17wAAAP__Ua6ILw">