diff -r 717c3345024f -r f82e0a8cd438 hotspot/src/share/vm/opto/connode.cpp --- a/hotspot/src/share/vm/opto/connode.cpp Wed Aug 27 00:21:55 2008 -0700 +++ b/hotspot/src/share/vm/opto/connode.cpp Wed Aug 27 09:15:46 2008 -0700 @@ -101,6 +101,8 @@ // Move constants to the right. Node *CMoveNode::Ideal(PhaseGVN *phase, bool can_reshape) { if( in(0) && remove_dead_region(phase, can_reshape) ) return this; + // Don't bother trying to transform a dead node + if( in(0) && in(0)->is_top() ) return NULL; assert( !phase->eqv(in(Condition), this) && !phase->eqv(in(IfFalse), this) && !phase->eqv(in(IfTrue), this), "dead loop in CMoveNode::Ideal" );