2351 // SuperWord transform 2352 SuperWord sw(this); 2353 for (LoopTreeIterator iter(_ltree_root); !iter.done(); iter.next()) { 2354 IdealLoopTree* lpt = iter.current(); 2355 if (lpt->is_counted()) { 2356 CountedLoopNode *cl = lpt->_head->as_CountedLoop(); 2357 2358 if (PostLoopMultiversioning && cl->is_rce_post_loop() && !cl->is_vectorized_loop()) { 2359 // Check that the rce'd post loop is encountered first, multiversion after all 2360 // major main loop optimization are concluded 2361 if (!C->major_progress()) { 2362 IdealLoopTree *lpt_next = lpt->_next; 2363 if (lpt_next && lpt_next->is_counted()) { 2364 CountedLoopNode *cl = lpt_next->_head->as_CountedLoop(); 2365 has_range_checks(lpt_next); 2366 if (cl->is_post_loop() && cl->range_checks_present()) { 2367 if (!cl->is_multiversioned()) { 2368 if (multi_version_post_loops(lpt, lpt_next) == false) { 2369 // Cause the rce loop to be optimized away if we fail 2370 cl->mark_is_multiversioned(); 2371 poison_rce_post_loop(lpt); 2372 } 2373 } 2374 } 2375 } 2376 } 2377 } else if (cl->is_main_loop()) { 2378 sw.transform_loop(lpt, true); 2379 } 2380 } 2381 } 2382 } 2383 2384 // Cleanup any modified bits 2385 _igvn.optimize(); 2386 2387 // disable assert until issue with split_flow_path is resolved (6742111) 2388 // assert(!_has_irreducible_loops || C->parsed_irreducible_loop() || C->is_osr_compilation(), 2389 // "shouldn't introduce irreducible loops"); 2390 2391 if (C->log() != NULL) { 2392 log_loop_tree(_ltree_root, _ltree_root, C->log()); 2393 } 2394 } 2395 | 2351 // SuperWord transform 2352 SuperWord sw(this); 2353 for (LoopTreeIterator iter(_ltree_root); !iter.done(); iter.next()) { 2354 IdealLoopTree* lpt = iter.current(); 2355 if (lpt->is_counted()) { 2356 CountedLoopNode *cl = lpt->_head->as_CountedLoop(); 2357 2358 if (PostLoopMultiversioning && cl->is_rce_post_loop() && !cl->is_vectorized_loop()) { 2359 // Check that the rce'd post loop is encountered first, multiversion after all 2360 // major main loop optimization are concluded 2361 if (!C->major_progress()) { 2362 IdealLoopTree *lpt_next = lpt->_next; 2363 if (lpt_next && lpt_next->is_counted()) { 2364 CountedLoopNode *cl = lpt_next->_head->as_CountedLoop(); 2365 has_range_checks(lpt_next); 2366 if (cl->is_post_loop() && cl->range_checks_present()) { 2367 if (!cl->is_multiversioned()) { 2368 if (multi_version_post_loops(lpt, lpt_next) == false) { 2369 // Cause the rce loop to be optimized away if we fail 2370 cl->mark_is_multiversioned(); 2371 cl->set_slp_max_unroll(0); 2372 poison_rce_post_loop(lpt); 2373 } 2374 } 2375 } 2376 } 2377 sw.transform_loop(lpt, true); 2378 } 2379 } else if (cl->is_main_loop()) { 2380 sw.transform_loop(lpt, true); 2381 } 2382 } 2383 } 2384 } 2385 2386 // Cleanup any modified bits 2387 _igvn.optimize(); 2388 2389 // disable assert until issue with split_flow_path is resolved (6742111) 2390 // assert(!_has_irreducible_loops || C->parsed_irreducible_loop() || C->is_osr_compilation(), 2391 // "shouldn't introduce irreducible loops"); 2392 2393 if (C->log() != NULL) { 2394 log_loop_tree(_ltree_root, _ltree_root, C->log()); 2395 } 2396 } 2397 |