summaryrefslogtreecommitdiff
path: root/runtime/base/bit_utils_test.cc
diff options
context:
space:
mode:
author Igor Murashkin <iam@google.com> 2017-10-09 13:37:50 -0700
committer Igor Murashkin <iam@google.com> 2017-10-09 13:40:53 -0700
commit2f366292b51789bcecb1bde53e07d7f78802bc4f (patch)
treed18ad8237837f1716706a074e738076842f9b212 /runtime/base/bit_utils_test.cc
parent797e6d4d2a2786da42c20a718723a72038f7a01c (diff)
base: Fix integer conversion in MaskLeastSignificant, add more asserts
T x = (1 << bits) was being truncated for sizeof(T) > sizeof(bits). Also add more static_asserts to BITSTRUCT_DEFINE_END to make it more error-proof. Test: make test-art-{host,target}-gtest-bit_{struct,utils}_test{32,64} Change-Id: Ifedf53c1211b4a9492ebd785c321a39d906dc87a
Diffstat (limited to 'runtime/base/bit_utils_test.cc')
-rw-r--r--runtime/base/bit_utils_test.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/runtime/base/bit_utils_test.cc b/runtime/base/bit_utils_test.cc
index 0276d8ded2..3a80600b57 100644
--- a/runtime/base/bit_utils_test.cc
+++ b/runtime/base/bit_utils_test.cc
@@ -350,6 +350,8 @@ static_assert(MaskLeastSignificant(1) == 0b1, "TestMaskLeastSignificant#2");
static_assert(MaskLeastSignificant(2) == 0b11, "TestMaskLeastSignificant#3");
static_assert(MaskLeastSignificant<uint8_t>(8) == 0xFF, "TestMaskLeastSignificant#4");
static_assert(MaskLeastSignificant<int8_t>(8) == 0xFF, "TestMaskLeastSignificant#5");
+static_assert(MaskLeastSignificant<uint64_t>(63) == (std::numeric_limits<uint64_t>::max() >> 1u),
+ "TestMaskLeastSignificant#6");
static_assert(BitFieldClear(0xFF, /*lsb*/0, /*width*/0) == 0xFF, "TestBitFieldClear#1");
static_assert(BitFieldClear(std::numeric_limits<uint32_t>::max(), /*lsb*/0, /*width*/32) == 0x0,