RFR: 8295159: DSO created with -ffast-math breaks Java floating-point arithmetic [v8]

Thomas Stuefe stuefe at openjdk.org
Wed Oct 11 18:46:49 UTC 2023


On Wed, 11 Oct 2023 17:20:18 GMT, Andrew Haley <aph at openjdk.org> wrote:

>> src/hotspot/os/bsd/os_bsd.cpp line 976:
>> 
>>> 974: // same architecture as Hotspot is running on
>>> 975: 
>>> 976: void *os::Bsd::dlopen_helper(const char *filename, int mode) {
>> 
>> I thought BSD is switching to clang.
>
> What difference does it make if it does?

I was trying to understand the BSD+gcc combination. We use clang on MacOS, so the only platform I thought would be affected would be one of the BSDs. 

But I thought those also moved to clang in their builds. Hence my question.

>> src/hotspot/os/bsd/os_bsd.cpp line 1001:
>> 
>>> 999:     static const volatile double thresh
>>> 1000:       = jdouble_cast(0x0000000000000003); // 0x0.0000000000003p-1022;
>>> 1001:     if (unity + thresh == unity || -unity - thresh == -unity) {
>> 
>> Could this expression happen to be precomputed by the compiler at build time? Maybe make the parts volatile?
>
> `thresh` is volatile. What more is needed?

Argh, sorry, missed that volatile.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/10661#discussion_r1355591017
PR Review Comment: https://git.openjdk.org/jdk/pull/10661#discussion_r1355593391


More information about the build-dev mailing list