From d55ef5ce5f92fc02063e65ef328b89a7d66a3636 Mon Sep 17 00:00:00 2001 From: Evgeniy Stepanov Date: Wed, 3 Jul 2013 14:39:14 +0000 Subject: [msan] Unpoison stack allocations and undef values in blacklisted functions. This changes behavior of -msan-poison-stack=0 flag from not poisoning stack allocations to actively unpoisoning them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185538 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Instrumentation/MemorySanitizer/msan_basic.ll | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'test/Instrumentation/MemorySanitizer/msan_basic.ll') diff --git a/test/Instrumentation/MemorySanitizer/msan_basic.ll b/test/Instrumentation/MemorySanitizer/msan_basic.ll index 3a8092b..4fa0319 100644 --- a/test/Instrumentation/MemorySanitizer/msan_basic.ll +++ b/test/Instrumentation/MemorySanitizer/msan_basic.ll @@ -638,6 +638,41 @@ declare void @bar() ; CHECK: ret i32 +; Test that stack allocations are unpoisoned in functions missing +; sanitize_memory attribute + +define i32 @NoSanitizeMemoryAlloca() { +entry: + %p = alloca i32, align 4 + %x = call i32 @NoSanitizeMemoryAllocaHelper(i32* %p) + ret i32 %x +} + +declare i32 @NoSanitizeMemoryAllocaHelper(i32* %p) + +; CHECK: @NoSanitizeMemoryAlloca +; CHECK: call void @llvm.memset.p0i8.i64(i8* {{.*}}, i8 0, i64 4, i32 4, i1 false) +; CHECK: call i32 @NoSanitizeMemoryAllocaHelper(i32* +; CHECK: ret i32 + + +; Test that undef is unpoisoned in functions missing +; sanitize_memory attribute + +define i32 @NoSanitizeMemoryUndef() { +entry: + %x = call i32 @NoSanitizeMemoryUndefHelper(i32 undef) + ret i32 %x +} + +declare i32 @NoSanitizeMemoryUndefHelper(i32 %x) + +; CHECK: @NoSanitizeMemoryAlloca +; CHECK: store i32 0, i32* {{.*}} @__msan_param_tls +; CHECK: call i32 @NoSanitizeMemoryUndefHelper(i32 undef) +; CHECK: ret i32 + + ; Test argument shadow alignment define <2 x i64> @ArgumentShadowAlignment(i64 %a, <2 x i64> %b) sanitize_memory { -- cgit v1.1