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
Thu Nov 12 10:50:03 UTC 2020


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)

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

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

Changes: https://git.openjdk.java.net/jdk/pull/1173/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1173&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8256220
  Stats: 17 lines in 1 file changed: 1 ins; 15 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1173.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1173/head:pull/1173

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


More information about the hotspot-compiler-dev mailing list