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