< prev index next >
src/hotspot/share/opto/macro.cpp
Print this page
rev 54102 : 8261812: C2 compilation fails with assert(!had_error) failed: bad dominance
Reviewed-by: kvn, thartmann
*** 466,485 ****
return NULL; // can't find a value on this path
}
if (val == mem) {
values.at_put(j, mem);
} else if (val->is_Store()) {
- #if INCLUDE_SHENANDOAHGC
Node* n = val->in(MemNode::ValueIn);
if (UseShenandoahGC) {
BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
n = bs->step_over_gc_barrier(n);
}
- values.at_put(j, n);
- #else
- values.at_put(j, val->in(MemNode::ValueIn));
#endif
} else if(val->is_Proj() && val->in(0) == alloc) {
values.at_put(j, _igvn.zerocon(ft));
} else if (val->is_Phi()) {
val = value_from_mem_phi(val, ft, phi_type, adr_t, alloc, value_phis, level-1);
if (val == NULL) {
--- 466,486 ----
return NULL; // can't find a value on this path
}
if (val == mem) {
values.at_put(j, mem);
} else if (val->is_Store()) {
Node* n = val->in(MemNode::ValueIn);
+ #if INCLUDE_SHENANDOAHGC
if (UseShenandoahGC) {
BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
n = bs->step_over_gc_barrier(n);
}
#endif
+ if (is_subword_type(ft)) {
+ n = Compile::narrow_value(ft, n, phi_type, &_igvn, true);
+ }
+ values.at_put(j, n);
} else if(val->is_Proj() && val->in(0) == alloc) {
values.at_put(j, _igvn.zerocon(ft));
} else if (val->is_Phi()) {
val = value_from_mem_phi(val, ft, phi_type, adr_t, alloc, value_phis, level-1);
if (val == NULL) {
< prev index next >