hotspot/src/share/vm/opto/loopopts.cpp
changeset 36067 63eabfc8429b
parent 36065 4f0e0cb7b016
child 37248 11a660dbbb8e
--- a/hotspot/src/share/vm/opto/loopopts.cpp	Fri Feb 12 16:12:15 2016 -0800
+++ b/hotspot/src/share/vm/opto/loopopts.cpp	Thu Feb 11 12:42:12 2016 +0100
@@ -47,6 +47,14 @@
     return NULL;
   }
 
+  // Splitting range check CastIIs through a loop induction Phi can
+  // cause new Phis to be created that are left unrelated to the loop
+  // induction Phi and prevent optimizations (vectorization)
+  if (n->Opcode() == Op_CastII && n->as_CastII()->has_range_check() &&
+      region->is_CountedLoop() && n->in(1) == region->as_CountedLoop()->phi()) {
+    return NULL;
+  }
+
   int wins = 0;
   assert(!n->is_CFG(), "");
   assert(region->is_Region(), "");