--- a/hotspot/src/share/vm/opto/loopnode.cpp Fri Nov 13 18:14:41 2015 +0300
+++ b/hotspot/src/share/vm/opto/loopnode.cpp Mon Nov 16 09:55:25 2015 +0100
@@ -329,6 +329,9 @@
Node* phi_incr = NULL;
// Trip-counter increment must be commutative & associative.
+ if (incr->Opcode() == Op_CastII) {
+ incr = incr->in(1);
+ }
if (incr->is_Phi()) {
if (incr->as_Phi()->region() != x || incr->req() != 3)
return false; // Not simple trip counter expression
@@ -356,6 +359,9 @@
xphi = stride;
stride = tmp;
}
+ if (xphi->Opcode() == Op_CastII) {
+ xphi = xphi->in(1);
+ }
// Stride must be constant
int stride_con = stride->get_int();
if (stride_con == 0)