aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Support/MathExtrasTest.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2017-04-19 17:46:15 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2017-04-19 17:46:15 +0000
commite25268de9d957a9aef7aa623fb81a71f19d224c1 (patch)
treeca684879d82babb6e126eb6576de9b8474955b32 /llvm/unittests/Support/MathExtrasTest.cpp
parent6cb7b8a42fbfb83233fee19894cc465bad9df842 (diff)
downloadllvm-e25268de9d957a9aef7aa623fb81a71f19d224c1.zip
llvm-e25268de9d957a9aef7aa623fb81a71f19d224c1.tar.gz
llvm-e25268de9d957a9aef7aa623fb81a71f19d224c1.tar.bz2
[MathExtras] Fix undefined behavior (shift by bit width)
While there add some unit tests for uint64_t. Found by ubsan. llvm-svn: 300721
Diffstat (limited to 'llvm/unittests/Support/MathExtrasTest.cpp')
-rw-r--r--llvm/unittests/Support/MathExtrasTest.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/unittests/Support/MathExtrasTest.cpp b/llvm/unittests/Support/MathExtrasTest.cpp
index de82721..f46d94e 100644
--- a/llvm/unittests/Support/MathExtrasTest.cpp
+++ b/llvm/unittests/Support/MathExtrasTest.cpp
@@ -84,6 +84,11 @@ TEST(MathExtras, onesMask) {
EXPECT_EQ(0xFFFFFFFFU, maskTrailingOnes<uint32_t>(32U));
EXPECT_EQ(0xFFFFFFFFU, maskLeadingOnes<uint32_t>(32U));
+ EXPECT_EQ(0xFFFFFFFFFFFFFFFFULL, maskTrailingOnes<uint64_t>(64U));
+ EXPECT_EQ(0xFFFFFFFFFFFFFFFFULL, maskLeadingOnes<uint64_t>(64U));
+
+ EXPECT_EQ(0x0000FFFFFFFFFFFFULL, maskTrailingOnes<uint64_t>(48U));
+ EXPECT_EQ(0xFFFFFFFFFFFF0000ULL, maskLeadingOnes<uint64_t>(48U));
}
TEST(MathExtras, findFirstSet) {