RFR: 8256220: C1: x86_32 fails with -XX:UseSSE=1 after JDK-8210764 due to mishandled lir_neg

Christian Hagedorn chagedorn at openjdk.java.net
Thu Nov 12 11:21:57 UTC 2020


On Wed, 11 Nov 2020 19:32:44 GMT, Aleksey Shipilev <shade 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!

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

Marked as reviewed by chagedorn (Reviewer).

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


More information about the hotspot-compiler-dev mailing list