RFR: 8263164: assert(_base >= VectorA && _base <= VectorZ) failed: Not a Vector while calling StoreVectorNode::memory_size()

Vladimir Kozlov kvn at openjdk.java.net
Mon Mar 8 17:38:05 UTC 2021


On Mon, 8 Mar 2021 06:26:01 GMT, Jie Fu <jiefu at openjdk.org> wrote:

> Hi all,
> 
> Several Vector API tests failed intermittently due to this assert.
> 
> #
> #  Internal Error (/home/jvm/jdk/src/hotspot/share/opto/type.hpp:1686), pid=10561, tid=10577
> #  assert(_base >= VectorA && _base <= VectorZ) failed: Not a Vector
> #
> # JRE version: OpenJDK Runtime Environment (17.0) (fastdebug build 17-internal+0-adhoc..jdk)
> # Java VM: OpenJDK 64-Bit Server VM (fastdebug 17-internal+0-adhoc..jdk, compiled mode, sharing, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
> # Problematic frame:
> # V  [libjvm.so+0x918f44]  StoreVectorNode::memory_size() const+0xb4
> 
> The reason is that StoreVectorNode::memory_size() will fail if StoreVectorNode->in(MemNode::ValueIn)->bottom_type() == Type::TOP.
> However, this case seems possible during C2's optimization.
> And the same bug exists for LoadVectorNode::memory_size() as well.
> 
> The fix returns 0 if StoreVectorNode->in(MemNode::ValueIn)->bottom_type() is not a vector type.
> 
> Testing:
>   - jdk/incubator/vector
>   - tier1~tier3
> 
> Any comments?
> 
> Thanks.
> Best regards,
> Jie

I don't think it is correct place to fix it. Why checks in StoreNode(and LoadNode)::Value() does not work for vectors?:
https://github.com/openjdk/jdk/blob/master/src/hotspot/share/opto/memnode.cpp#L2702

Did we forgot to put this nodes on IGVN worklist somewhere?

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

Changes requested by kvn (Reviewer).

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


More information about the hotspot-compiler-dev mailing list