--- a/hotspot/src/share/vm/opto/phaseX.cpp Mon Jan 27 10:20:51 2014 -0800
+++ b/hotspot/src/share/vm/opto/phaseX.cpp Fri May 16 12:05:14 2014 -0700
@@ -1393,6 +1393,15 @@
_worklist.push(u);
}
}
+ // If changed AddI/SubI inputs, check CmpU for range check optimization.
+ if (use_op == Op_AddI || use_op == Op_SubI) {
+ for (DUIterator_Fast i2max, i2 = use->fast_outs(i2max); i2 < i2max; i2++) {
+ Node* u = use->fast_out(i2);
+ if (u->is_Cmp() && (u->Opcode() == Op_CmpU)) {
+ _worklist.push(u);
+ }
+ }
+ }
// If changed AddP inputs, check Stores for loop invariant
if( use_op == Op_AddP ) {
for (DUIterator_Fast i2max, i2 = use->fast_outs(i2max); i2 < i2max; i2++) {