RFR: 8256220: C1: x86_32 fails with -XX:UseSSE=1 after JDK-8210764 due to mishandled lir_neg
Aleksey Shipilev
shade at openjdk.java.net
Fri Nov 13 07:42:58 UTC 2020
On Thu, 12 Nov 2020 11:18:49 GMT, Christian Hagedorn <chagedorn at openjdk.org> wrote:
>> This failure manifests on many tests in `tier1`:
>>
>> $ CONF=linux-x86-server-fastdebug make images run-test TEST=tier1 TEST_VM_OPTS="-XX:UseSSE=1"
>>
>> # Internal Error (/home/shade/trunks/jdk/src/hotspot/cpu/x86/c1_LinearScan_x86.cpp:794), pid=1484789, tid=1484820
>> # assert(false) failed: missed a fpu-operation
>> #
>> # JRE version: OpenJDK Runtime Environment (16.0) (fastdebug build 16-internal+0-adhoc.shade.jdk)
>> # Java VM: OpenJDK Server VM (fastdebug 16-internal+0-adhoc.shade.jdk, mixed mode, tiered, g1 gc, linux-x86)
>> # Problematic frame:
>> # V [libjvm.so+0x6d6300] FpuStackAllocator::handle_op2(LIR_Op2*)+0xf0
>>
>> Amending that assert implies we miss "neg". I believe it was missed when [JDK-8210764](https://bugs.openjdk.java.net/browse/JDK-8210764) changed `lir_neg` from `LIR_Op1` to `LIR_Op2`. At first I just moved the block to appropriate switch that handles `op2`, but then I realized `lir_neg` code is basically the same as for `lir_abs` in the same switch.
>>
>> Testing:
>> - [x] Linux x86_32 fastdebug tier1 with `-XX:UseSSE=0` (some leftover failures)
>> - [x] Linux x86_32 fastdebug tier1 with `-XX:UseSSE=1` (some leftover failures)
>
> Yes, that block seems to do the same - looks good to me!
Thanks!
-------------
PR: https://git.openjdk.java.net/jdk/pull/1173
More information about the hotspot-compiler-dev
mailing list