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

    <tr>
        <th>Summary</th>
        <td>
            __builtin_isnan() wrong code at -O2 and -O3 on x86_64-linux-gnu
        </td>
    </tr>

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

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

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

<pre>
    Compiler Explorer: https://godbolt.org/z/cd98jMxnP
- at -O0:
```console
t2.a[0] = 0.000000
t2.a[1] = 0.000000
t2.a[2] = 0.000000
t2.a[3] = 0.000000
```
- at -O2:
```console
t2.a[0] = 0.100000
t2.a[1] = 0.000000
t2.a[2] = 2.100000
t2.a[3] = 0.000000
```

Code:
```c
#include <stdio.h>

struct GdkRGBA2 {
  double a[4];
};

struct GdkRGBA3 {
  float a[4];
};

struct GdkRGBA3 f(struct GdkRGBA2 *color) {
  struct GdkRGBA3 t1;
  for(int i = 0; i < 4; i++)
    t1.a[i] = color->a[i];
  struct GdkRGBA3 t2;
  for(int i = 0; i < 4; i++) {
 float tmp = t1.a[i];
    if (__builtin_isnan(tmp))
      t2.a[i] = tmp;
    printf("t2.a[%d] = %f\n", i, t2.a[i]);
  }
  return t2;
}

int main() {
  struct GdkRGBA2 color;
  for(int i = 0; i < 4; i++)
    color.a[i] = i + 0.1f;

  struct GdkRGBA3 result = f(&color);
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVd1uszgQfZrhZkQEY0Pggov8NL1adbUvEBkwibuOHYFps_v0KwNJaRNV-_WLEHF8PGfOzLEd0XXqYKQsIFlDsg1E7462LUqVVkFp63-KjT2dlZYtPl3O2rayBbbCo3PnDtgKaAe0O9i6tNotbHsA2v0LtKvqPHv942L-hGgL0SpE4TB8iXzEMAFpND6VNZ3Vcpx1tBCQrCNItghsi9EiGj6f0PhblL5F2WP0puaTWvpltfGP1dKj2P-ndnxvbC0f6J1-E1Om0n0tEdimc7WyiyOwpzlB59q-cvhc__3X83pFCMv1CCDWti-1RC-JQ7IFNiGwnI0fkLA5SaOtcD_haICyO3G0qqy2LVA-z_E11MU3bsTGL8-UcajGpgJbD8MN8mEItB6e_BqB6OLBCHU1YkgaAnu6zs7475LTj5LP6hlb5k7nIWSmZUaMqBoEyvb7slfaKbNXnREGKHOns69lXg7itLNuBflFc7Jzq4zzHQeiaS1QUl-XAyUNJBsDREAbr3ozp_TJPti8tdOwla5vzbwlN3B8-86chDJD5m88pdGC37R14PjcCIVAa3-Emy_b8d7YVna9dkPU2Kn0uhcfVHc9iUFdsDpnuQhkES8p45yleRwciyblZR1zJgQXeZqVeRPx5TLLZBPzki-bQBUUEY-jKI9YzJN40fAyLimqSApWJ4kAHsmTUHqh9dvJ38GB6rpeFnEcp8QCLUqpu-F6JzLyHQfUO5hsg7bwQWHZHzrgkVad6z5onHJaFvc7yzv03lpzwMrWcrosUZgawxeG1uAlS_cpD7Uy_SU8mD7oW118-ctQ7tiXi8qegHY-4_QVnlv7KisHtBt0dkC7qZC3gv4LAAD__wiuvMI">