equal
deleted
inserted
replaced
1663 if( use->is_Phi() ) // Phi use is in prior block |
1663 if( use->is_Phi() ) // Phi use is in prior block |
1664 cfg = prev->in(idx); // NOT in block of Phi itself |
1664 cfg = prev->in(idx); // NOT in block of Phi itself |
1665 if (cfg->is_top()) { // Use is dead? |
1665 if (cfg->is_top()) { // Use is dead? |
1666 _igvn.replace_input_of(use, idx, C->top()); |
1666 _igvn.replace_input_of(use, idx, C->top()); |
1667 continue; |
1667 continue; |
|
1668 } |
|
1669 |
|
1670 // If use is referenced through control edge... (idx == 0) |
|
1671 if (mode == IgnoreStripMined && idx == 0) { |
|
1672 LoopNode *head = loop->_head->as_Loop(); |
|
1673 if (head->is_strip_mined() && is_dominator(head->outer_loop_exit(), prev)) { |
|
1674 // That node is outside the inner loop, leave it outside the |
|
1675 // outer loop as well to not confuse verification code. |
|
1676 assert(!loop->_parent->is_member(use_loop), "should be out of the outer loop"); |
|
1677 _igvn.replace_input_of(use, 0, head->outer_loop_exit()); |
|
1678 continue; |
|
1679 } |
1668 } |
1680 } |
1669 |
1681 |
1670 while(!outer_loop->is_member(get_loop(cfg))) { |
1682 while(!outer_loop->is_member(get_loop(cfg))) { |
1671 prev = cfg; |
1683 prev = cfg; |
1672 cfg = cfg->_idx >= new_counter ? cfg->in(2) : idom(cfg); |
1684 cfg = cfg->_idx >= new_counter ? cfg->in(2) : idom(cfg); |