]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
unit: avoid UB by making integer literal explicitally unsigned
authorCarlo Marcelo Arenas Belón <carenas@gmail.com>
Thu, 30 May 2019 18:31:29 +0000 (11:31 -0700)
committerChang, Harry <harry.chang@intel.com>
Tue, 13 Aug 2019 06:49:37 +0000 (14:49 +0800)
reported by cppcheck as:

[unit/internal/uniform_ops.cpp:78]: (error) Shifting signed 32-bit value by 31 bits is undefined behaviour
[unit/internal/uniform_ops.cpp:109]: (error) Shifting signed 32-bit value by 31 bits is undefined behaviour
[unit/internal/uniform_ops.cpp:127]: (error) Shifting signed 32-bit value by 31 bits is undefined behaviour
[unit/internal/uniform_ops.cpp:145]: (error) Shifting signed 32-bit value by 31 bits is undefined behaviour

unit/internal/uniform_ops.cpp

index 10defdbd37917c7d51274cc79a1a2cb5a806cb4c..7d394e02acba21e50099e0b8612cd101c812ca53 100644 (file)
@@ -75,7 +75,7 @@ TEST(Uniform, loadstore_u16) {
 
 TEST(Uniform, loadstore_u32) {
     for (int i = 0; i < 32; i++) {
-        u32 in = 1 << i;
+        u32 in = 1U << i;
         const char *cin = (const char *)(&in);
         u32 out = load_u32(cin);
         EXPECT_EQ(in, out);
@@ -106,7 +106,7 @@ TEST(Uniform, loadstore_m128) {
     } in;
     for (int i = 0; i < 128; i++) {
         memset(&in, 0, sizeof(in));
-        in.words[i/32] = 1 << (i % 32);
+        in.words[i/32] = 1U << (i % 32);
         const char *cin = (const char *)(&in);
         m128 out = load_m128(cin);
         EXPECT_EQ(0, memcmp(&out, &in, sizeof(out)));
@@ -124,7 +124,7 @@ TEST(Uniform, loadstore_m256) {
     } in;
     for (int i = 0; i < 256; i++) {
         memset(&in, 0, sizeof(in));
-        in.words[i/32] = 1 << (i % 32);
+        in.words[i/32] = 1U << (i % 32);
         const char *cin = (const char *)(&in);
         m256 out = load_m256(cin);
         EXPECT_EQ(0, memcmp(&out, &in, sizeof(out)));
@@ -142,7 +142,7 @@ TEST(Uniform, loadstore_m512) {
     } in;
     for (int i = 0; i < 512; i++) {
         memset(&in, 0, sizeof(in));
-        in.words[i/32] = 1 << (i % 32);
+        in.words[i/32] = 1U << (i % 32);
         const char *cin = (const char *)(&in);
         m512 out = load_m512(cin);
         EXPECT_EQ(0, memcmp(&out, &in, sizeof(out)));