diff -r b4ce4e9eb97d -r 085b304a1cc5 src/share/vm/opto/subnode.cpp --- a/src/share/vm/opto/subnode.cpp Thu Mar 13 10:18:59 2014 -0700 +++ b/src/share/vm/opto/subnode.cpp Thu Jan 23 12:08:28 2014 +0100 @@ -1126,11 +1126,15 @@ Node *cmp = in(1); if( !cmp->is_Sub() ) return NULL; int cop = cmp->Opcode(); - if( cop == Op_FastLock || cop == Op_FastUnlock || cop == Op_FlagsProj) return NULL; + if( cop == Op_FastLock || cop == Op_FastUnlock) return NULL; Node *cmp1 = cmp->in(1); Node *cmp2 = cmp->in(2); if( !cmp1 ) return NULL; + if (_test._test == BoolTest::overflow || _test._test == BoolTest::no_overflow) { + return NULL; + } + // Constant on left? Node *con = cmp1; uint op2 = cmp2->Opcode();