8274855: vectorapi tests failing with assert(!vbox->is_Phi()) failed

Reviewed-by: kvn
This commit is contained in:
Igor Veresov 2021-10-29 18:03:10 +00:00
parent fe6a202087
commit 5021a12cea
2 changed files with 15 additions and 3 deletions

View File

@ -315,6 +315,21 @@ Node* PhaseVector::expand_vbox_node_helper(Node* vbox,
}
new_phi = C->initial_gvn()->transform(new_phi);
return new_phi;
} else if (vbox->is_Phi() && (vect->is_Vector() || vect->is_LoadVector())) {
// Handle the case when the allocation input to VectorBoxNode is a phi
// but the vector input is not, which can definitely be the case if the
// vector input has been value-numbered. It seems to be safe to do by
// construction because VectorBoxNode and VectorBoxAllocate come in a
// specific order as a result of expanding an intrinsic call. After that, if
// any of the inputs to VectorBoxNode are value-numbered they can only
// move up and are guaranteed to dominate.
Node* new_phi = new PhiNode(vbox->as_Phi()->region(), box_type);
for (uint i = 1; i < vbox->req(); i++) {
Node* new_box = expand_vbox_node_helper(vbox->in(i), vect, box_type, vect_type);
new_phi->set_req(i, new_box);
}
new_phi = C->initial_gvn()->transform(new_phi);
return new_phi;
} else if (vbox->is_Proj() && vbox->in(0)->Opcode() == Op_VectorBoxAllocate) {
VectorBoxAllocateNode* vbox_alloc = static_cast<VectorBoxAllocateNode*>(vbox->in(0));
return expand_vbox_alloc_node(vbox_alloc, vect, box_type, vect_type);

View File

@ -39,7 +39,4 @@ vmTestbase/vm/mlvm/hiddenloader/stress/oome/heap/Test.java 8273095 generic-all
serviceability/sa/TestJhsdbJstackMixed.java 8248675 linux-aarch64
compiler/vectorapi/VectorCastShape64Test.java 8274855 generic-x64
compiler/vectorapi/VectorCastShape128Test.java 8274855 generic-x64
compiler/codegen/aes/TestAESMain.java 8274323 linux-x64,windows-x64