summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2016-02-12 22:00:22 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2016-02-12 22:00:22 +0000
commite1556e5dd5c20bdc49af8a9f97b5401615a50f55 (patch)
tree2f9279831e4272b48bf6fb94a06c7efb67500d55
parent79a886be06968752b115aacdd33232c55ec5e0aa (diff)
downloadbcm5719-llvm-e1556e5dd5c20bdc49af8a9f97b5401615a50f55.tar.gz
bcm5719-llvm-e1556e5dd5c20bdc49af8a9f97b5401615a50f55.zip
Fix MemorySanitizer.ptrtoint test on big-endian targets.
llvm-svn: 260749
-rw-r--r--compiler-rt/lib/msan/tests/msan_test.cc18
1 files changed, 12 insertions, 6 deletions
diff --git a/compiler-rt/lib/msan/tests/msan_test.cc b/compiler-rt/lib/msan/tests/msan_test.cc
index b7162b3c081..f3d464ed652 100644
--- a/compiler-rt/lib/msan/tests/msan_test.cc
+++ b/compiler-rt/lib/msan/tests/msan_test.cc
@@ -2389,13 +2389,19 @@ TEST(MemorySanitizer, Invoke) {
TEST(MemorySanitizer, ptrtoint) {
// Test that shadow is propagated through pointer-to-integer conversion.
- void* p = (void*)0xABCD;
- __msan_poison(((char*)&p) + 1, sizeof(p));
- EXPECT_NOT_POISONED((((uintptr_t)p) & 0xFF) == 0);
+ unsigned char c = 0;
+ __msan_poison(&c, 1);
+ uintptr_t u = (uintptr_t)c << 8;
+ EXPECT_NOT_POISONED(u & 0xFF00FF);
+ EXPECT_POISONED(u & 0xFF00);
- void* q = (void*)0xABCD;
- __msan_poison(&q, sizeof(q) - 1);
- EXPECT_POISONED((((uintptr_t)q) & 0xFF) == 0);
+ break_optimization(&u);
+ void* p = (void*)u;
+
+ break_optimization(&p);
+ EXPECT_POISONED(p);
+ EXPECT_NOT_POISONED(((uintptr_t)p) & 0xFF00FF);
+ EXPECT_POISONED(((uintptr_t)p) & 0xFF00);
}
static void vaargsfn2(int guard, ...) {
OpenPOWER on IntegriCloud