RFR: 8358104: Fix ZGC compilation error on GCC 10.2
Kim Barrett
kbarrett at openjdk.org
Fri May 30 07:09:50 UTC 2025
On Fri, 30 May 2025 02:40:48 GMT, Qizheng Xing <qxing at openjdk.org> wrote:
> JDK-8350441 introduced Mapped Cache for ZGC. However, the constructor of `ZMappedCache` uses brace-initialization for `_size_class_lists`, i.e. a `ZList` array. `ZList` is a class with a deleted copy constructor and an explicit destructor, and when its array is brace-initialized in the constructor, it triggers [GCC bug 63707](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63707). A short example to reproduce this bug: https://godbolt.org/z/3397bxc73
>
> The bug causes compilation error of ZGC on GCC versions 10.1 to 10.2. Considering OpenJDK compilation is still requires GCC 10 or higher, this should be recorded as a bug.
>
> This patch uses value-initialization for `_size_class_lists` instead of brace-initialization, which should be semantically equivalent and work on all GCC versions.
The change seems okay, though a bit disappointing that it's needed.
The referenced gcc bug seems to have been fixed in gcc11, with backports to
gcc10.3 and gcc9.4. The minimum supported compiler version has always been
somewhat approximate, since there isn't regular testing reported for what are
often rather old versions. Sometimes we just decide to force an update to the
required minimum rather than working around an issue like this.
I wonder why that version is still in use?
-------------
Marked as reviewed by kbarrett (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/25536#pullrequestreview-2880376496
More information about the hotspot-gc-dev
mailing list