RFR: 8345159: RISCV: Fix -Wzero-as-null-pointer-constant warning in emit_static_call_stub

Dean Long dlong at openjdk.org
Tue Dec 3 00:30:38 UTC 2024


On Thu, 28 Nov 2024 12:05:28 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:

> Please review this change to RISCV code to remove a
> -Wzero-as-null-pointer-constant warning in MacroAssembler::emit_static_call_stub.
> 
> It was calling MacroAssembler::movptr with the second (address) argument being
> a literal 0. Rather than changing it to use nullptr for that argument, I've
> instead changed it to call the movptr2 helper function, which takes the target
> address as a unint64_t. This eliminates the conversion of 0 to a pointer and
> then back to an integer 0. It seemed to me more natural to use that helper
> directly, as it was presumed that was what ended up being called anyway. But
> the riscv porters should weigh in on whether that's a good approach to dealing
> with this case.
> 
> Testing: GHA sanity tests, which includes building for linux-riscv64.  I don't
> have the capability to run tests for this platform, so hoping someone from the
> riscv porters can do more testing.

src/hotspot/cpu/riscv/macroAssembler_riscv.cpp line 788:

> 786:   // Jump to the entry point of the c2i stub.
> 787:   int32_t offset = 0;
> 788:   movptr2(t1, 0, offset, t0); // lui + lui + slli + add

How about something like this?
Suggestion:

  address placeholder = pc(); // correct value will be patched in later
  movptr2(t1, placeholder, offset, t0); // lui + lui + slli + add

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

PR Review Comment: https://git.openjdk.org/jdk/pull/22435#discussion_r1866802461


More information about the hotspot-compiler-dev mailing list