# HG changeset patch # User kvn # Date 1509094532 0 # Node ID 002df709f2f2e25652b3f3c2a82dec84f151ba13 # Parent 1821be9ca11b1d7ca1e176b95ba31b707011551e# Parent 17676a23cf3fd477b497a43d5185cd6db68655bb Merge diff -r 1821be9ca11b -r 002df709f2f2 src/hotspot/share/opto/superword.cpp --- a/src/hotspot/share/opto/superword.cpp Fri Oct 27 07:19:00 2017 +0000 +++ b/src/hotspot/share/opto/superword.cpp Fri Oct 27 08:55:32 2017 +0000 @@ -2168,10 +2168,12 @@ CountedLoopNode *cl = lpt()->_head->as_CountedLoop(); Compile* C = _phase->C; if (_packset.length() == 0) { - // Instigate more unrolling for optimization when vectorization fails. - C->set_major_progress(); - cl->set_notpassed_slp(); - cl->mark_do_unroll_only(); + if (cl->is_main_loop()) { + // Instigate more unrolling for optimization when vectorization fails. + C->set_major_progress(); + cl->set_notpassed_slp(); + cl->mark_do_unroll_only(); + } return; } @@ -2417,6 +2419,9 @@ }//for (int i = 0; i < _block.length(); i++) C->set_max_vector_size(max_vlen_in_bytes); + if (max_vlen_in_bytes > 0) { + cl->mark_loop_vectorized(); + } if (SuperWordLoopUnrollAnalysis) { if (cl->has_passed_slp()) { @@ -2439,7 +2444,6 @@ } if (do_reserve_copy()) { - cl->mark_loop_vectorized(); if (can_process_post_loop) { // Now create the difference of trip and limit and use it as our mask index. // Note: We limited the unroll of the vectorized loop so that