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

    <tr>
        <th>Summary</th>
        <td>
            compare-fp-4.c fails with -Os
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:Hexagon
      </td>
    </tr>

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

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

<pre>
    `compare-fp-4.c` from [llvm-test-suite](https://github.com/androm3da/llvm-test-suite/blob/b73ae5c1e7e72a7a616cd6f789e13d29e848a5fd/SingleSource/Regression/C/gcc-c-torture/execute/ieee/compare-fp-4.c) fails with -Os (but passes with -O2).

Test case reduced to 
```
$ cat ../llvm-test-suite/SingleSource/Regression/C/gcc-c-torture/execute/ieee/compare-fp-4.c
extern void abort (void);

#define TEST(c) if ((c) != ok) abort ();
#define ORD(a, b) (((a) < (b)) || (a) >= (b))
#define UNEQ(a, b) (!LTGT ((a), (b)))
#define UNLT(a, b) (((a) < (b)) || __builtin_isunordered ((a), (b)))
#define UNGT(a, b) (((a) > (b)) || __builtin_isunordered ((a), (b)))
#define LTGT(a, b) (((a) < (b)) || (a) > (b))

float pinf;
float ninf;
float NaN;

int iltgt (float x, float y, int ok) {
  TEST (!UNEQ (x, y));
  TEST (LTGT (x, y));
  TEST (ORD (x, y) && (UNLT (x, y) || UNGT (x,y)));
}

int main () {
  pinf = __builtin_inf ();
  ninf = -__builtin_inf ();
  NaN = __builtin_nan ("");

  iltgt (ninf, pinf, 1);
  iltgt (NaN, NaN, 0);

  return 0;
}

```

```
$ ../clang+llvm-21.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang -o fp4 ../llvm-test-suite/SingleSource/Regression/C/gcc-c-torture/execute/ieee/compare-fp-4.c -Wno-implicit-function-declaration  -Os -DNDEBUG
$ ../clang+llvm-21.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/qemu-hexagon -L ../clang+llvm-21.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/target/hexagon-unknown-linux-musl/usr/ ./fp4 ; echo $?
Aborted (core dumped)
134
$ /opt/clang+llvm-18.1.0-rc1-cross-hexagon-unknown-linux-musl/x86_64-linux-musl/bin/hexagon-unknown-linux-musl-clang -o fp4 ../llvm-test-suite/SingleSource/Regression/C/gcc-c-torture/execute/ieee/compare-fp-4.c -Wno-implicit-function-declaration  -O2 -DNDEBUG
../llvm-test-suite/SingleSource/Regression/C/gcc-c-torture/execute/ieee/compare-fp-4.c:28:1: warning: non-void function does not return a value in all control paths [-Wreturn-type]
   28 | }
      | ^
1 warning generated.

$ ../clang+llvm-21.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/qemu-hexagon -L ../clang+llvm-21.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/target/hexagon-unknown-linux-musl/usr/ ./fp4 ; echo $?
0

```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkV9-Pm7gT_2ucl5ER2ATIQx6yydLvQ7XVt92qjytjBuIrsTnbbLP__clAkk16t1J1vUqnk5Dssef3Zzw2wjnVasQ1Wd6R5W4hBr83di10bc2B12JRmfplTbJYmkMvLNKmp2kkSRZDY80ByPKu654P1KPz1A3KI1nuCCv23veO8A1hJWFlq_x-qCJpDoSVZ92ElbeyrKw6U4Uh5wKXMsEccyZykSWZrLMmL1aY8JqtsEgLsWxqwspPSrcdfjKDlUHBR2wtOqeMJqzcBuNSUkm9sX6wgQGPKIfRlkIMw01obAWNUJ2Db8rvgX5wQFhRDR564Ryelxlhq4jEGxJvHtF5kMIhWKwHiTV4A2Eri-cv3hCWghQeouhPw_7ZQcQbPHq0Gp6NqkFUxvoQRqAIWxF-N3lOGK-xURrh8f7TI2HFGL5qAu-JIiwhfAfmayDOmi5azio-fAzIC8K2UE2CxfSJkeLbMZFBMJD5luTjyrx7H4xcGK40f364___3qpP3j-8e4WIi7L5S8J2O948_7N7TUzWoziv9pNygja3RYv0DJt-9bfL-p5sMKfk7INwgEG-azggPvdLNBPdE6xv6QTyca0ppD6rz7Vgm0_YxuDNNX8I0sEz1RPIgBWP5zagGsMN0FHqZfeHXbCfk3-L58HF3xQKEZYRlYS3Uws3elImA2Gnj5ZLhKbR8dwnwIJSej8E5hpAkCFX8CkLdXB0WGDM3MtG3uB7Ew40mLWZ7bPwuRxguyR5RYdsJLbaF5JXGM1OAim1hHuJrVRb9YDXENxFfNbLv-9rY02QndEvYdB2wJIqjmEprnKN7PIrWaDror9p807RTejjSw-A6wspjkT1l6bzW6iH0fhW63l9L0dEUUANNn_6ihgr0izZUHfpOSeVpM2jpldG0RtkJK8IcxruC7h5293ef3_2TqfkdD8NJFOj7n23EC9uifxMCwsrBWcJKCKYDDITfAcq9AcJSwksSbzbhqphalzQWoR4OPdZTY0l4OieIsNL0_tb_pIiSKKZWJj8cw7z2Ly4i9rqIftF7gW9YQfgmIXwD34TVSrdhqo2m4wvi5CvUBh1o40-tQsCz6AYEpUF0HUijvTUd9MLvXXgd0i8TI_Uv_fg2DG0GWAHjxZPPNMBEL-9DcZw8gBY1WuGxjk7Plf_0ibptv4t6zesVX4kFrpM8jYs0Z4wv9uucV01WYYortsIsEUWTyqoWGTZpUleZWKg1i9ky5nGSZGnMeJTUaZIUXDQrXmU5CpLGeBCqi0LwkbHtQjk34DphK75KFp2osHPjTwNjlZBfUdeEb_43hRduqOVuYddj5qqhdSSNO-W8u6jzyne4vjkf1-_uxWC79Rs_EkHX6XD01vyGMqR49NMRVs6uPq_ZHwEAAP__XInchA">