comparison src/share/vm/opto/phaseX.cpp @ 305:ab075d07f1ba

6736417: Fastdebug C2 crashes in StoreBNode::Ideal Summary: The result of step_through_mergemem() and remove_dead_region() is not checked in some cases. Reviewed-by: never
author kvn
date Wed, 27 Aug 2008 09:15:46 -0700
parents d1605aabd0a1
children 98cb887364d3
comparison
equal deleted inserted replaced
304:dc7f315e41f7 305:ab075d07f1ba
984 } 984 }
985 985
986 // Apply the Ideal call in a loop until it no longer applies 986 // Apply the Ideal call in a loop until it no longer applies
987 Node *k = n; 987 Node *k = n;
988 DEBUG_ONLY(dead_loop_check(k);) 988 DEBUG_ONLY(dead_loop_check(k);)
989 DEBUG_ONLY(bool is_new = (k->outcnt() == 0);)
989 Node *i = k->Ideal(this, /*can_reshape=*/true); 990 Node *i = k->Ideal(this, /*can_reshape=*/true);
991 assert(i != k || is_new || i->outcnt() > 0, "don't return dead nodes");
990 #ifndef PRODUCT 992 #ifndef PRODUCT
991 if( VerifyIterativeGVN ) 993 if( VerifyIterativeGVN )
992 verify_step(k); 994 verify_step(k);
993 if( i && VerifyOpto ) { 995 if( i && VerifyOpto ) {
994 if( !allow_progress() ) { 996 if( !allow_progress() ) {
1022 subsume_node( k, i ); 1024 subsume_node( k, i );
1023 k = i; 1025 k = i;
1024 } 1026 }
1025 DEBUG_ONLY(dead_loop_check(k);) 1027 DEBUG_ONLY(dead_loop_check(k);)
1026 // Try idealizing again 1028 // Try idealizing again
1029 DEBUG_ONLY(is_new = (k->outcnt() == 0);)
1027 i = k->Ideal(this, /*can_reshape=*/true); 1030 i = k->Ideal(this, /*can_reshape=*/true);
1031 assert(i != k || is_new || i->outcnt() > 0, "don't return dead nodes");
1028 #ifndef PRODUCT 1032 #ifndef PRODUCT
1029 if( VerifyIterativeGVN ) 1033 if( VerifyIterativeGVN )
1030 verify_step(k); 1034 verify_step(k);
1031 if( i && VerifyOpto ) set_progress(); 1035 if( i && VerifyOpto ) set_progress();
1032 #endif 1036 #endif