comparison src/hotspot/share/opto/parse1.cpp @ 54640:2f4393ec54d4

8221592: C2 compilation failed with assert(!q->is_MergeMem()) Summary: Transform the original MergeMem after transforming the slices to get rid of MergeMem inputs. Reviewed-by: kvn, neliasso
author thartmann
date Mon, 29 Apr 2019 09:04:25 +0200
parents 1d953ae4d39f
children 9ad765641e8f
comparison
equal deleted inserted replaced
6:dcced1c5a407 7:dd6efe448498
1026 1026
1027 for (MergeMemStream mms(_exits.merged_memory()); mms.next_non_empty(); ) { 1027 for (MergeMemStream mms(_exits.merged_memory()); mms.next_non_empty(); ) {
1028 // transform each slice of the original memphi: 1028 // transform each slice of the original memphi:
1029 mms.set_memory(_gvn.transform(mms.memory())); 1029 mms.set_memory(_gvn.transform(mms.memory()));
1030 } 1030 }
1031 // Clean up input MergeMems created by transforming the slices
1032 _gvn.transform(_exits.merged_memory());
1031 1033
1032 if (tf()->range()->cnt() > TypeFunc::Parms) { 1034 if (tf()->range()->cnt() > TypeFunc::Parms) {
1033 const Type* ret_type = tf()->range()->field_at(TypeFunc::Parms); 1035 const Type* ret_type = tf()->range()->field_at(TypeFunc::Parms);
1034 Node* ret_phi = _gvn.transform( _exits.argument(0) ); 1036 Node* ret_phi = _gvn.transform( _exits.argument(0) );
1035 if (!_exits.control()->is_top() && _gvn.type(ret_phi)->empty()) { 1037 if (!_exits.control()->is_top() && _gvn.type(ret_phi)->empty()) {