STL_MSFT created this revision.
STL_MSFT added reviewers: EricWF, mclow.lists.
STL_MSFT added a subscriber: cfe-commits.

Avoid applying unary minus to unsigned integers.

This is confusing because first you have to remember what unsigned negation 
does, then you have to worry about the usual arithmetic conversions during the 
comparison. It's simpler to express the most negative values as "blah - 1" 
expressions, and then the only UAC involved is widening int to long long and 
that's easy.

Fixes MSVC warning/error C4146 "unary minus operator applied to unsigned type, 
result still unsigned".

http://reviews.llvm.org/D21870

Files:
  test/std/depr/depr.c.headers/stdint_h.pass.cpp
  test/std/language.support/cstdint/cstdint.syn/cstdint.pass.cpp

Index: test/std/language.support/cstdint/cstdint.syn/cstdint.pass.cpp
===================================================================
--- test/std/language.support/cstdint/cstdint.syn/cstdint.pass.cpp
+++ test/std/language.support/cstdint/cstdint.syn/cstdint.pass.cpp
@@ -172,8 +172,8 @@
     // INTN_MIN
     static_assert(INT8_MIN == -128, "INT8_MIN == -128");
     static_assert(INT16_MIN == -32768, "INT16_MIN == -32768");
-    static_assert(INT32_MIN == -2147483648U, "INT32_MIN == -2147483648");
-    static_assert(INT64_MIN == -9223372036854775808ULL, "INT64_MIN == 
-9223372036854775808LL");
+    static_assert(INT32_MIN == -2147483647 - 1, "INT32_MIN == -2147483648");
+    static_assert(INT64_MIN == -9223372036854775807LL - 1, "INT64_MIN == 
-9223372036854775808LL");
 
     // INTN_MAX
     static_assert(INT8_MAX == 127, "INT8_MAX == 127");
@@ -190,8 +190,8 @@
     // INT_FASTN_MIN
     static_assert(INT_FAST8_MIN <= -128, "INT_FAST8_MIN <= -128");
     static_assert(INT_FAST16_MIN <= -32768, "INT_FAST16_MIN <= -32768");
-    static_assert(INT_FAST32_MIN <= -2147483648U, "INT_FAST32_MIN <= 
-2147483648");
-    static_assert(INT_FAST64_MIN <= -9223372036854775808ULL, "INT_FAST64_MIN 
<= -9223372036854775808LL");
+    static_assert(INT_FAST32_MIN <= -2147483647 - 1, "INT_FAST32_MIN <= 
-2147483648");
+    static_assert(INT_FAST64_MIN <= -9223372036854775807LL - 1, 
"INT_FAST64_MIN <= -9223372036854775808LL");
 
     // INT_FASTN_MAX
     static_assert(INT_FAST8_MAX >= 127, "INT_FAST8_MAX >= 127");
Index: test/std/depr/depr.c.headers/stdint_h.pass.cpp
===================================================================
--- test/std/depr/depr.c.headers/stdint_h.pass.cpp
+++ test/std/depr/depr.c.headers/stdint_h.pass.cpp
@@ -171,8 +171,8 @@
     // INTN_MIN
     static_assert(INT8_MIN == -128, "INT8_MIN == -128");
     static_assert(INT16_MIN == -32768, "INT16_MIN == -32768");
-    static_assert(INT32_MIN == -2147483648U, "INT32_MIN == -2147483648");
-    static_assert(INT64_MIN == -9223372036854775808ULL, "INT64_MIN == 
-9223372036854775808LL");
+    static_assert(INT32_MIN == -2147483647 - 1, "INT32_MIN == -2147483648");
+    static_assert(INT64_MIN == -9223372036854775807LL - 1, "INT64_MIN == 
-9223372036854775808LL");
 
     // INTN_MAX
     static_assert(INT8_MAX == 127, "INT8_MAX == 127");
@@ -189,8 +189,8 @@
     // INT_FASTN_MIN
     static_assert(INT_FAST8_MIN <= -128, "INT_FAST8_MIN <= -128");
     static_assert(INT_FAST16_MIN <= -32768, "INT_FAST16_MIN <= -32768");
-    static_assert(INT_FAST32_MIN <= -2147483648U, "INT_FAST32_MIN <= 
-2147483648");
-    static_assert(INT_FAST64_MIN <= -9223372036854775808ULL, "INT_FAST64_MIN 
<= -9223372036854775808LL");
+    static_assert(INT_FAST32_MIN <= -2147483647 - 1, "INT_FAST32_MIN <= 
-2147483648");
+    static_assert(INT_FAST64_MIN <= -9223372036854775807LL - 1, 
"INT_FAST64_MIN <= -9223372036854775808LL");
 
     // INT_FASTN_MAX
     static_assert(INT_FAST8_MAX >= 127, "INT_FAST8_MAX >= 127");


Index: test/std/language.support/cstdint/cstdint.syn/cstdint.pass.cpp
===================================================================
--- test/std/language.support/cstdint/cstdint.syn/cstdint.pass.cpp
+++ test/std/language.support/cstdint/cstdint.syn/cstdint.pass.cpp
@@ -172,8 +172,8 @@
     // INTN_MIN
     static_assert(INT8_MIN == -128, "INT8_MIN == -128");
     static_assert(INT16_MIN == -32768, "INT16_MIN == -32768");
-    static_assert(INT32_MIN == -2147483648U, "INT32_MIN == -2147483648");
-    static_assert(INT64_MIN == -9223372036854775808ULL, "INT64_MIN == -9223372036854775808LL");
+    static_assert(INT32_MIN == -2147483647 - 1, "INT32_MIN == -2147483648");
+    static_assert(INT64_MIN == -9223372036854775807LL - 1, "INT64_MIN == -9223372036854775808LL");
 
     // INTN_MAX
     static_assert(INT8_MAX == 127, "INT8_MAX == 127");
@@ -190,8 +190,8 @@
     // INT_FASTN_MIN
     static_assert(INT_FAST8_MIN <= -128, "INT_FAST8_MIN <= -128");
     static_assert(INT_FAST16_MIN <= -32768, "INT_FAST16_MIN <= -32768");
-    static_assert(INT_FAST32_MIN <= -2147483648U, "INT_FAST32_MIN <= -2147483648");
-    static_assert(INT_FAST64_MIN <= -9223372036854775808ULL, "INT_FAST64_MIN <= -9223372036854775808LL");
+    static_assert(INT_FAST32_MIN <= -2147483647 - 1, "INT_FAST32_MIN <= -2147483648");
+    static_assert(INT_FAST64_MIN <= -9223372036854775807LL - 1, "INT_FAST64_MIN <= -9223372036854775808LL");
 
     // INT_FASTN_MAX
     static_assert(INT_FAST8_MAX >= 127, "INT_FAST8_MAX >= 127");
Index: test/std/depr/depr.c.headers/stdint_h.pass.cpp
===================================================================
--- test/std/depr/depr.c.headers/stdint_h.pass.cpp
+++ test/std/depr/depr.c.headers/stdint_h.pass.cpp
@@ -171,8 +171,8 @@
     // INTN_MIN
     static_assert(INT8_MIN == -128, "INT8_MIN == -128");
     static_assert(INT16_MIN == -32768, "INT16_MIN == -32768");
-    static_assert(INT32_MIN == -2147483648U, "INT32_MIN == -2147483648");
-    static_assert(INT64_MIN == -9223372036854775808ULL, "INT64_MIN == -9223372036854775808LL");
+    static_assert(INT32_MIN == -2147483647 - 1, "INT32_MIN == -2147483648");
+    static_assert(INT64_MIN == -9223372036854775807LL - 1, "INT64_MIN == -9223372036854775808LL");
 
     // INTN_MAX
     static_assert(INT8_MAX == 127, "INT8_MAX == 127");
@@ -189,8 +189,8 @@
     // INT_FASTN_MIN
     static_assert(INT_FAST8_MIN <= -128, "INT_FAST8_MIN <= -128");
     static_assert(INT_FAST16_MIN <= -32768, "INT_FAST16_MIN <= -32768");
-    static_assert(INT_FAST32_MIN <= -2147483648U, "INT_FAST32_MIN <= -2147483648");
-    static_assert(INT_FAST64_MIN <= -9223372036854775808ULL, "INT_FAST64_MIN <= -9223372036854775808LL");
+    static_assert(INT_FAST32_MIN <= -2147483647 - 1, "INT_FAST32_MIN <= -2147483648");
+    static_assert(INT_FAST64_MIN <= -9223372036854775807LL - 1, "INT_FAST64_MIN <= -9223372036854775808LL");
 
     // INT_FASTN_MAX
     static_assert(INT_FAST8_MAX >= 127, "INT_FAST8_MAX >= 127");
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to