# HG changeset patch # User mdoerr # Date 1573571596 -3600 # Node ID ad05ed6f2a7778a98917f4780c4cda43dee3b0ed # Parent 3786a0962570d8fd7bb8e30671a34b49a442c2a5 8233820: Test crashed with assert(phi->operand_count() != 1 || phi->subst() != phi) failed: missed trivial simplification Summary: Verification code needs to skip illegal phi functions. Reviewed-by: thartmann, vlivanov diff -r 3786a0962570 -r ad05ed6f2a77 src/hotspot/share/c1/c1_GraphBuilder.cpp --- a/src/hotspot/share/c1/c1_GraphBuilder.cpp Fri Nov 08 11:15:16 2019 +0000 +++ b/src/hotspot/share/c1/c1_GraphBuilder.cpp Tue Nov 12 16:13:16 2019 +0100 @@ -2590,7 +2590,7 @@ #ifdef ASSERT for_each_phi_fun(b, phi, - assert(phi->operand_count() != 1 || phi->subst() != phi, "missed trivial simplification"); + assert(phi->operand_count() != 1 || phi->subst() != phi || phi->is_illegal(), "missed trivial simplification"); ); ValueStack* state = b->state()->caller_state(); diff -r 3786a0962570 -r ad05ed6f2a77 src/hotspot/share/c1/c1_Optimizer.cpp --- a/src/hotspot/share/c1/c1_Optimizer.cpp Fri Nov 08 11:15:16 2019 +0000 +++ b/src/hotspot/share/c1/c1_Optimizer.cpp Tue Nov 12 16:13:16 2019 +0100 @@ -366,6 +366,8 @@ assert(sux_value == end_state->stack_at(index), "stack not equal"); } for_each_local_value(sux_state, index, sux_value) { + Phi* sux_phi = sux_value->as_Phi(); + if (sux_phi != NULL && sux_phi->is_illegal()) continue; assert(sux_value == end_state->local_at(index), "locals not equal"); } assert(sux_state->caller_state() == end_state->caller_state(), "caller not equal");