RFR: 8300080: offset_of for GCC/Clang exhibits undefined behavior and is not always a compile-time constant
Kim Barrett
kbarrett at openjdk.org
Tue Sep 2 23:33:17 UTC 2025
On Tue, 2 Sep 2025 23:25:43 GMT, Kim Barrett <kbarrett 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
Assuming this gets approved, there should be followup issues to (1) remove the unnecessary warning suppression
once we're using C++17, and (2) update uses of offset_of to instead use offsetof directly. I'll file those issues once
this gets approved.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/27061#issuecomment-3247131522
More information about the hotspot-dev
mailing list