RFR: 8311847: Fix -Wconversion for assembler.hpp emit_int8,16 callers

Coleen Phillimore coleenp at openjdk.org
Tue Jul 11 12:59:05 UTC 2023


On Tue, 11 Jul 2023 02:09:40 GMT, Dean Long <dlong at openjdk.org> wrote:

>> Please review changes to fix -Wconversion warnings that come from assembler_<cpu>.cpp by adding narrow_casts to the emit_int8,16,24, and 32 functions.  And some other fixups with checked_cast.
>> 
>> Ran tier1 on Oracle platforms, and tier1-4 on linux-x64-debug, linux-aarch64-debug, windows-x64-debug.
>
> src/hotspot/cpu/aarch64/assembler_aarch64.hpp line 224:
> 
>> 222:     unsigned target = *(unsigned *)a;
>> 223:     target &= ~mask;
>> 224:     target |= checked_cast<unsigned>(val);
> 
> Any value that doesn't fit in 32 bits is going to fail, so it's tempting to force the callers to pass 32-bit types, but that's a bigger change.  How about something like this:
> 
> static ALWAYSINLINE void patch(address a, int msb, int lsb, uint32_t val) {
> /* original code, no additional checked_cast needed */
> }
> 
> static ALWAYSINLINE void patch(address a, int msb, int lsb, uint64_t val) {
>   patch(a, msb, lsb, checked_cast<unsigned>(val));
> }

I'll try this suggestion.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/14822#discussion_r1259690565


More information about the hotspot-compiler-dev mailing list