RFR: 8300080: offset_of for GCC/Clang exhibits undefined behavior and is not always a compile-time constant
Kim Barrett
kbarrett at openjdk.org
Thu Sep 4 04:16:41 UTC 2025
On Wed, 3 Sep 2025 07:28:49 GMT, Stefan Karlsson <stefank at openjdk.org> wrote:
>> Please review this change to offset_of to just use offsetof as it's
>> implementation. The rationale for this is
>>
>> (1) Despite being UB for some cases that we use (through C++14), none of the
>> compilers we use actually treat it as such, other than some compilers issuing
>> warnings. (Surprisingly, the UB doesn't appear to disable constexpr evaluation?)
>>
>> (2) C++17 changed it to be conditionally defined in those formerly UB cases,
>> and we'll be switching over to C++17 soon (JDK-8314488).
>>
>> Until we make the switch to C++17 we need to suppress warnings from some
>> compilers for such uses. We can remove that warning suppression later.
>>
>> See the JBS issue for more discussion.
>>
>> Testing: mach5 tier1
>
> Nice. Is it worth pushing this so near the transition to compile with C++17 support?
Thanks for reviews @stefank and @jdksjolen
-------------
PR Comment: https://git.openjdk.org/jdk/pull/27061#issuecomment-3251764296
More information about the hotspot-dev
mailing list