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