Mercurial > hg > truffle
diff src/share/vm/opto/loopnode.cpp @ 1621:6027dddc26c6
6677629: PhaseIterGVN::subsume_node() should call hash_delete() and add_users_to_worklist()
Summary: Use replace_node() method instead of subsume_node().
Reviewed-by: jrose, never
author | kvn |
---|---|
date | Mon, 28 Jun 2010 14:54:39 -0700 |
parents | c18cbe5936b8 |
children | d6f45b55c972 |
line wrap: on
line diff
--- a/src/share/vm/opto/loopnode.cpp Mon Jun 28 10:52:50 2010 -0700 +++ b/src/share/vm/opto/loopnode.cpp Mon Jun 28 14:54:39 2010 -0700 @@ -400,7 +400,7 @@ nphi->set_req(LoopNode::LoopBackControl, phi->in(LoopNode::LoopBackControl)); nphi = _igvn.register_new_node_with_optimizer(nphi); set_ctrl(nphi, get_ctrl(phi)); - _igvn.subsume_node(phi, nphi); + _igvn.replace_node(phi, nphi); phi = nphi->as_Phi(); } cmp = cmp->clone(); @@ -760,7 +760,7 @@ // which in turn prevents removing an empty loop. Node *id_old_phi = old_phi->Identity( &igvn ); if( id_old_phi != old_phi ) { // Found a simple identity? - // Note that I cannot call 'subsume_node' here, because + // Note that I cannot call 'replace_node' here, because // that will yank the edge from old_phi to the Region and // I'm mid-iteration over the Region's uses. for (DUIterator_Last imin, i = old_phi->last_outs(imin); i >= imin; ) { @@ -1065,11 +1065,9 @@ l = igvn.register_new_node_with_optimizer(l, _head); phase->set_created_loop_node(); // Go ahead and replace _head - phase->_igvn.subsume_node( _head, l ); + phase->_igvn.replace_node( _head, l ); _head = l; phase->set_loop(_head, this); - for (DUIterator_Fast imax, i = l->fast_outs(imax); i < imax; i++) - phase->_igvn.add_users_to_worklist(l->fast_out(i)); } // Now recursively beautify nested loops @@ -1329,8 +1327,7 @@ Node* add = new (C, 3) AddINode(ratio_idx, diff); phase->_igvn.register_new_node_with_optimizer(add); phase->set_ctrl(add, cl); - phase->_igvn.hash_delete( phi2 ); - phase->_igvn.subsume_node( phi2, add ); + phase->_igvn.replace_node( phi2, add ); // Sometimes an induction variable is unused if (add->outcnt() == 0) { phase->_igvn.remove_dead_node(add);