< prev index next >

src/hotspot/share/opto/split_if.cpp

Print this page

        

@@ -237,11 +237,11 @@
     Node *x = n->clone();
     // Widen the type of the ConvI2L when pushing up.
     if (rtype != NULL) x->as_Type()->set_type(rtype);
     if( n->in(0) && n->in(0) == blk1 )
       x->set_req( 0, blk1->in(j) );
-    for( uint i = 1; i < n->req(); i++ ) {
+    for( uint i = n->is_Proj() ? 0 : 1; i < n->req(); i++ ) {
       Node *m = n->in(i);
       if( get_ctrl(m) == blk1 ) {
         assert( m->in(0) == blk1, "" );
         x->set_req( i, m->in(j) );
       }

@@ -251,10 +251,11 @@
   }
   // Announce phi to optimizer
   register_new_node(phi, blk1);
 
   // Remove cloned-up value from optimizer; use phi instead
+  split_mem_thru_phi(n, blk1, phi);
   _igvn.replace_node( n, phi );
 
   // (There used to be a self-recursive call to split_up() here,
   // but it is not needed.  All necessary forward walking is done
   // by do_split_if() below.)
< prev index next >