RFR: 8267375: Aarch64: JVM crashes with option -XX:PrintIdealGraphLevel=3 on SVE backend

Wang Huang whuang at openjdk.java.net
Fri May 28 06:59:28 UTC 2021


Reason: 


operand pRegGov()
%{
  constraint(ALLOC_IN_RC(gov_pr));
  match(RegVectMask);
  op_cost(0);
  format %{ %}
  interface(REG_INTER);
%}

if `pRegGov` is used as a `TEMP`, like :


instruct insertB_small(vReg dst, vReg src, iRegIorL2I val, immI idx, pRegGov pTmp, rFlagsReg cr)
%{
  predicate(UseSVE > 0 && n->as_Vector()->length() <= 32 &&
            n->bottom_type()->is_vect()->element_basic_type() == T_BYTE);
  match(Set dst (VectorInsert (Binary src val) idx));
  effect(TEMP_DEF dst, TEMP pTmp, KILL cr); // here


It will have the type `Type::VectorMask` in `MachTempNode` which is generated from `Expand`. However, we miss `Type::VectorMask` in `Type::category()`.

We can fix this bug simply by adding `case Type::VectorMask` in `Type::category()`.

Although now we can only reproduce this bug on AArch64,  it should be added for all platforms with predicate support.

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

Commit messages:
 - Aarch64: JVM crashes with option -XX:PrintIdealGraphLevel=3 on SVE backend

Changes: https://git.openjdk.java.net/jdk/pull/4239/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=4239&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8267375
  Stats: 65 lines in 2 files changed: 65 ins; 0 del; 0 mod
  Patch: https://git.openjdk.java.net/jdk/pull/4239.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/4239/head:pull/4239

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


More information about the hotspot-compiler-dev mailing list