--- a/hotspot/src/share/vm/opto/loopnode.cpp Fri Jul 10 11:31:49 2015 -0700
+++ b/hotspot/src/share/vm/opto/loopnode.cpp Fri Jul 10 11:59:09 2015 -0700
@@ -2317,7 +2317,11 @@
// Reassociate invariants and prep for split_thru_phi
for (LoopTreeIterator iter(_ltree_root); !iter.done(); iter.next()) {
IdealLoopTree* lpt = iter.current();
- if (!lpt->is_counted() || !lpt->is_inner()) continue;
+ bool is_counted = lpt->is_counted();
+ if (!is_counted || !lpt->is_inner()) continue;
+
+ // check for vectorized loops, any reassociation of invariants was already done
+ if (is_counted && lpt->_head->as_CountedLoop()->do_unroll_only()) continue;
lpt->reassociate_invariants(this);