8233820: Test crashed with assert(phi->operand_count() != 1 || phi->subst() != phi) failed: missed trivial simplification
authormdoerr
Tue, 12 Nov 2019 16:13:16 +0100
changeset 59032 ad05ed6f2a77
parent 59029 3786a0962570
child 59034 76bec73a91f0
child 59035 404560ee1088
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
src/hotspot/share/c1/c1_GraphBuilder.cpp
src/hotspot/share/c1/c1_Optimizer.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();
--- 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");