src/hotspot/share/opto/loopopts.cpp
changeset 58311 88fce7eea1f6
parent 58285 1182ff8929cc
child 58351 d322bf161e31
equal deleted inserted replaced
58310:81134def991d 58311:88fce7eea1f6
  1441 
  1441 
  1442               // Don't allow the control input to be a CFG splitting node.
  1442               // Don't allow the control input to be a CFG splitting node.
  1443               // Such nodes should only have ProjNodes as outs, e.g. IfNode
  1443               // Such nodes should only have ProjNodes as outs, e.g. IfNode
  1444               // should only have IfTrueNode and IfFalseNode (4985384).
  1444               // should only have IfTrueNode and IfFalseNode (4985384).
  1445               x_ctrl = find_non_split_ctrl(x_ctrl);
  1445               x_ctrl = find_non_split_ctrl(x_ctrl);
       
  1446 
       
  1447               IdealLoopTree* x_loop = get_loop(x_ctrl);
       
  1448               Node* x_head = x_loop->_head;
       
  1449               if (x_head->is_Loop() && (x_head->is_OuterStripMinedLoop() || x_head->as_Loop()->is_strip_mined()) && is_dominator(n_ctrl, x_head)) {
       
  1450                 // Anti dependence analysis is sometimes too
       
  1451                 // conservative: a store in the outer strip mined loop
       
  1452                 // can prevent a load from floating out of the outer
       
  1453                 // strip mined loop but the load may not be referenced
       
  1454                 // from the safepoint: loop strip mining verification
       
  1455                 // code reports a problem in that case. Make sure the
       
  1456                 // load is not moved in the outer strip mined loop in
       
  1457                 // that case.
       
  1458                 x_ctrl = x_head->as_Loop()->skip_strip_mined()->in(LoopNode::EntryControl);
       
  1459               }
  1446               assert(dom_depth(n_ctrl) <= dom_depth(x_ctrl), "n is later than its clone");
  1460               assert(dom_depth(n_ctrl) <= dom_depth(x_ctrl), "n is later than its clone");
  1447 
  1461 
  1448               x->set_req(0, x_ctrl);
  1462               x->set_req(0, x_ctrl);
  1449             }
  1463             }
  1450             register_new_node(x, x_ctrl);
  1464             register_new_node(x, x_ctrl);