RFR: 8335298: Fix -Wzero-as-null-pointer-constant warning in G1CardSetContainers

Albert Mingkun Yang ayang at openjdk.org
Mon Jul 1 08:16:22 UTC 2024


On Sat, 29 Jun 2024 01:01:06 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:

> Please review this change to the G1CardSetInlinePtr default constructor to
> avoid -Wzero-as-null-pointer-constant.  The problem is that it is casting a
> constant 0 to a pointer.  Because casting 0 to a pointer is what this code
> needs to do, the options are to (1) suppress the warning, or (2) write the
> code in such a way as to dodge the warning.  We take the latter approach, as
> it involves less source code clutter.  We expect an optimizing compiler to
> produce the same code either way.
> 
> Also simplified the constructors by using delegation.
> 
> Testing: mach5 tier1.
> Locally (linux-x64) verified the warning no longer occurs with this change.

src/hotspot/share/gc/g1/g1CardSetContainers.hpp line 96:

> 94:     static_assert(G1CardSet::ContainerInlinePtr == 0, "unnecessary warning dodge");
> 95:     auto value = G1CardSet::ContainerInlinePtr;
> 96:     return reinterpret_cast<ContainerPtr>(value);

`reinterpret_cast<ContainerPtr>(G1CardSet::ContainerInlinePtr);` doesn't trigger a warning for Clang. I wonder if this is a bug in gcc.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/19955#discussion_r1660650442


More information about the hotspot-gc-dev mailing list