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

Jie Fu jiefu at openjdk.java.net
Thu Mar 11 05:03:08 UTC 2021


On Thu, 11 Mar 2021 03:52:44 GMT, Eric Liu <github.com+10482586+theRealELiu at openjdk.org> wrote:

> Have you tried `phase->type(value)` ? I suppose the type maybe TOP but `value` itself may not.

Thanks @theRealELiu for your review.

I've tried this

diff --git a/src/hotspot/share/opto/memnode.cpp b/src/hotspot/share/opto/memnode.cpp
index 440e29f..c1a8634 100644
--- a/src/hotspot/share/opto/memnode.cpp
+++ b/src/hotspot/share/opto/memnode.cpp
@@ -2617,6 +2617,10 @@ Node *StoreNode::Ideal(PhaseGVN *phase, bool can_reshape) {
   Node* mem     = in(MemNode::Memory);
   Node* address = in(MemNode::Address);
   Node* value   = in(MemNode::ValueIn);
+
+  if (value && value->is_top()) return NULL;
+  if (value && phase->type(value) == Type::TOP) return NULL;
+
   // Back-to-back stores to same address?  Fold em up.  Generally
   // unsafe if I have intervening uses...  Also disallowed for StoreCM
   // since they must follow each StoreP operation.  Redundant StoreCMs

But there is still no good news.

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

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


More information about the hotspot-compiler-dev mailing list