--- old/src/share/vm/opto/superword.cpp 2016-01-14 16:04:46.910237799 +0100 +++ new/src/share/vm/opto/superword.cpp 2016-01-14 16:04:46.842237801 +0100 @@ -3343,6 +3343,11 @@ return true; } } else if (opc == Op_ConvI2L) { + if (n->in(1)->Opcode() == Op_CastII && + n->in(1)->as_CastII()->has_range_check()) { + // Skip range check dependent CastII nodes + n = n->in(1); + } if (scaled_iv_plus_offset(n->in(1))) { NOT_PRODUCT(_tracer.scaled_iv_7(n);) return true; @@ -3437,6 +3442,12 @@ if (invariant(n)) { if (opc == Op_ConvI2L) { n = n->in(1); + if (n->Opcode() == Op_CastII && + n->as_CastII()->has_range_check()) { + // Skip range check dependent CastII nodes + assert(invariant(n), "sanity"); + n = n->in(1); + } } if (n->bottom_type()->isa_int()) { _negate_invar = negate;