diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2017-04-19 17:46:15 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2017-04-19 17:46:15 +0000 |
commit | e25268de9d957a9aef7aa623fb81a71f19d224c1 (patch) | |
tree | ca684879d82babb6e126eb6576de9b8474955b32 /llvm/unittests/Support/MathExtrasTest.cpp | |
parent | 6cb7b8a42fbfb83233fee19894cc465bad9df842 (diff) | |
download | llvm-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.cpp | 5 |
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) { |