8262299: C2 compilation fails with "modified node was not processed by IGVN.transform_old()"

Reviewed-by: roland, chagedorn
This commit is contained in:
Tobias Hartmann 2021-02-25 08:53:27 +00:00
parent 0f8be6e433
commit a83e802bce

@ -183,15 +183,17 @@ Node* ArrayCopyNode::try_clone_instance(PhaseGVN *phase, bool can_reshape, int c
Node* in_mem = in(TypeFunc::Memory);
const Type* src_type = phase->type(base_src);
MergeMemNode* mem = phase->transform(MergeMemNode::make(in_mem))->as_MergeMem();
const TypeInstPtr* inst_src = src_type->isa_instptr();
if (inst_src == NULL) {
return NULL;
}
MergeMemNode* mem = phase->transform(MergeMemNode::make(in_mem))->as_MergeMem();
PhaseIterGVN* igvn = phase->is_IterGVN();
if (igvn != NULL) {
igvn->_worklist.push(mem);
}
if (!inst_src->klass_is_exact()) {
ciInstanceKlass* ik = inst_src->klass()->as_instance_klass();
assert(!ik->is_interface() && !ik->has_subklass(), "inconsistent klass hierarchy");