1.1 --- a/src/share/vm/opto/subnode.cpp Mon Apr 25 11:36:14 2016 +0200 1.2 +++ b/src/share/vm/opto/subnode.cpp Tue May 24 18:42:01 2016 +0300 1.3 @@ -547,8 +547,12 @@ 1.4 // All unsigned values are LE -1 and GE 0. 1.5 if (lo0 == 0 && hi0 == 0) { 1.6 return TypeInt::CC_LE; // 0 <= bot 1.7 + } else if ((jint)lo0 == -1 && (jint)hi0 == -1) { 1.8 + return TypeInt::CC_GE; // -1 >= bot 1.9 } else if (lo1 == 0 && hi1 == 0) { 1.10 return TypeInt::CC_GE; // bot >= 0 1.11 + } else if ((jint)lo1 == -1 && (jint)hi1 == -1) { 1.12 + return TypeInt::CC_LE; // bot <= -1 1.13 } 1.14 } else { 1.15 // We can use ranges of the form [lo..hi] if signs are the same.