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
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
-------------
Commit messages:
- offset_of just uses offsetof
Changes: https://git.openjdk.org/jdk/pull/27061/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27061&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8300080
Stats: 26 lines in 4 files changed: 5 ins; 20 del; 1 mod
Patch: https://git.openjdk.org/jdk/pull/27061.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/27061/head:pull/27061
PR: https://git.openjdk.org/jdk/pull/27061
More information about the hotspot-dev
mailing list