summaryrefslogtreecommitdiff
path: root/test/Instrumentation
diff options
context:
space:
mode:
authorKuba Brecka <kuba.brecka@gmail.com>2015-07-22 10:25:38 +0000
committerKuba Brecka <kuba.brecka@gmail.com>2015-07-22 10:25:38 +0000
commita5812d5bbf0a13190b48ac9819ab940e68762239 (patch)
tree8c4faff3e6beb2cebca1d8b0ad70c4f641ff6f27 /test/Instrumentation
parentf020cb2f752306fa733455085f577e8043de167f (diff)
[asan] Improve moving of non-instrumented allocas
In r242510, non-instrumented allocas are now moved into the first basic block. This patch limits that to only move allocas that are present *after* the first instrumented one (i.e. only move allocas up). A testcase was updated to show behavior in these two cases. Without the patch, an alloca could be moved down, and could cause an invalid IR. Differential Revision: http://reviews.llvm.org/D11339 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242883 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Instrumentation')
-rw-r--r--test/Instrumentation/AddressSanitizer/debug_info_noninstrumented_alloca.ll25
1 files changed, 19 insertions, 6 deletions
diff --git a/test/Instrumentation/AddressSanitizer/debug_info_noninstrumented_alloca.ll b/test/Instrumentation/AddressSanitizer/debug_info_noninstrumented_alloca.ll
index 7c38729ff43..844da79f708 100644
--- a/test/Instrumentation/AddressSanitizer/debug_info_noninstrumented_alloca.ll
+++ b/test/Instrumentation/AddressSanitizer/debug_info_noninstrumented_alloca.ll
@@ -9,18 +9,31 @@ target triple = "x86_64-apple-macosx10.10.0"
define i32 @foo() sanitize_address {
entry:
+ ; Won't be instrumented because of asan-skip-promotable-allocas.
+ %non_instrumented1 = alloca i32, align 4
+
; Regular alloca, will get instrumented (forced by the ptrtoint below).
%instrumented = alloca i32, align 4
; Won't be instrumented because of asan-skip-promotable-allocas.
- %non_instrumented = alloca i32, align 4
- store i32 0, i32* %non_instrumented, align 4
- %value = load i32, i32* %non_instrumented, align 4
+ %non_instrumented2 = alloca i32, align 4
+
+ br label %bb0
+
+bb0:
+ ; Won't be instrumented because of asan-skip-promotable-allocas.
+ %non_instrumented3 = alloca i32, align 4
+
+ %ptr = ptrtoint i32* %instrumented to i32
+ br label %bb1
- %ptr = ptrtoint i32* %instrumented to i64
- ret i32 %value
+bb1:
+ ret i32 %ptr
}
; CHECK: entry:
-; CHECK: %non_instrumented = alloca i32, align 4
+; CHECK: %non_instrumented1 = alloca i32, align 4
+; CHECK: %non_instrumented2 = alloca i32, align 4
; CHECK: load i32, i32* @__asan_option_detect_stack_use_after_return
+; CHECK: bb0:
+; CHECK: %non_instrumented3 = alloca i32, align 4