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

    <tr>
        <th>Summary</th>
        <td>
            the value is error from std::nearbyint with FE_UPWARD when using clang -O2
        </td>
    </tr>

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

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

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

<pre>
    ```
#include <cmath>
#include <cfenv>
#include <functional>
#include <iostream>

int main()
{           
    std::fesetround(FE_UPWARD); 
    float v = 0.125;
    float v1 = (float)std::nearbyint((float)(0.125));
    float v2 = (float)std::rint ((float)(0.125));

    std::cout << "nearbyint(0.125) = " << v1 << std::endl;
    std::cout << "rint(0.125)     = " << v2 << std::endl;
    return (v1+v2);
}
```


```
clang++  test.cpp
nearbyint(0.125) = 1
rint(0.125)          = 1

clang++   -O2  test.cpp
nearbyint(0.125) = 0
rint(0.125)          = 0
```

As above show, the result using -O2 is different from using -O0.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyNlE2PmzAQhn-NuViLjAkJHDgkm821VaWqx8rAAK6MHfmDaP99jZOQj03aIIsMvJ7nnZk4qVTzWaIlOS2yRWSNaMplLVwDGKXv9cBsj9KPh1oLcnyitU7WlivJxJMNXBmrgQ0XOdy5tHhgXCKaI1qclNUGX67juykytkHp2q8WDFitnGx82u7j98_vv9Y_tlN-urna3wrFLB69-xaTOKGZl7-oSZA9Jzx7xuwigenq0xcYapt1Hx5hU1g8QtKnSD21-xLuQde1cnaapF-eQa_LOxNOxvS8LXQXopkCshE3RT_j6zt0-C7u8PT_eA3WaTk1PSaIbkZ60-VqewruzuT1_VaqBZOdB_mFsQVj43q_P0pPJ5Ic9UcdzW0l1543JvjtG33ZirxgRf7R89pgVqkRsOnVAdF3bHvwMzROWOwMl12ohhvc8LYFDf48tVoNs0biqCnTpkgLFlluBZQTYGTCwZQFWit9zPh6zvGB2x7Pvyd86EGewGEgk3XktCh7a_dmSqY7vzqf5aq4VoN_EGI8f7zttfoDtZ_DjhvjwPggW2akiPqyoKyp8iKnkEIGwNqirVieszQv6hVJ8kiwCoQpUbYJR_2AA8LHKNtGvKSEUrJKUpLTdJHHq0UGVZMss4w0LZAWLQj4fxURT3XESneRLkNJleuMFwU31lxEZgzvJECw83zmbK90WfduYNr0TCRRsC9D-X8BsnlyLQ">