RFR: 8271869: AArch64: build errors with GCC11 in frame::saved_oop_result

Andrew Haley aph at openjdk.java.net
Mon Aug 16 09:12:34 UTC 2021


On Thu, 5 Aug 2021 14:14:38 GMT, Alan Hayward <github.com+4146708+a74nh at openjdk.org> wrote:

> GCC11 warns that r0 is null. It does not complain if r1 is used instead.
> 
> AIUI, it is undefined behaviour in C++ to call member functions without
> a valid this pointer. So, technically GCC is correct to warn.

On 8/10/21 8:41 AM, Kim Barrett wrote:

> Yuck!  But I guess we don't have any other quick solution to
> supporting this compiler version, so as with JDK-8270083 I'm
> conditionally approving this as a temporary workaround.  I see this
> bug is already linked to JDK-8270140.
>
> @theRealAph - You mentioned a prototype patch to fix the register
> definitions (probably addressing JDK-8270140?).

Yes, it fixes that by making Register well-defined behaviour.

> How close are you on that?  Do you need any help?

The patch works just fine, but there is a smallish performance
degradation.  Having said that, the degradation is much less than the
performance gain from 8269122 (The use of "extern const" for Register
definitions generates poor code) so probably no-one would notice, and
we'd get rid of the undefined behaviour.  I didn't submit it because I
thought people rather liked the fake-pointer-to-nothing hack and
didn't care about UB. I can dig the patch out if you like.

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

PR: https://git.openjdk.java.net/jdk/pull/5020


More information about the hotspot-dev mailing list