summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/Instrumentation/AddressSanitizer/stack_layout.ll50
1 files changed, 43 insertions, 7 deletions
diff --git a/llvm/test/Instrumentation/AddressSanitizer/stack_layout.ll b/llvm/test/Instrumentation/AddressSanitizer/stack_layout.ll
index 6575dd62f87..96706f70c83 100644
--- a/llvm/test/Instrumentation/AddressSanitizer/stack_layout.ll
+++ b/llvm/test/Instrumentation/AddressSanitizer/stack_layout.ll
@@ -1,18 +1,21 @@
; Test the ASan's stack layout.
; More tests in tests/Transforms/Utils/ASanStackFrameLayoutTest.cpp
-; RUN: opt < %s -asan -asan-module -asan-stack-dynamic-alloca=0 -S \
-; RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-STATIC
-; RUN: opt < %s -asan -asan-module -asan-stack-dynamic-alloca=1 -S \
-; RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-DYNAMIC
+; RUN: opt < %s -asan -asan-module -asan-stack-dynamic-alloca=0 -asan-use-after-scope -S \
+; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-STATIC
+; RUN: opt < %s -asan -asan-module -asan-stack-dynamic-alloca=1 -asan-use-after-scope -S \
+; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-DYNAMIC
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
declare void @Use(i8*)
+declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
+declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
-; CHECK: private unnamed_addr constant{{.*}}3 32 10 3 XXX 64 20 3 YYY 128 30 3 ZZZ
-; CHECK: private unnamed_addr constant{{.*}}3 32 5 3 AAA 64 55 3 BBB 160 555 3 CCC
-; CHECK: private unnamed_addr constant{{.*}}3 256 128 3 CCC 448 128 3 BBB 608 128 3 AAA
+; CHECK: private unnamed_addr constant{{.*}}3 32 10 3 XXX 64 20 3 YYY 128 30 3 ZZZ\0
+; CHECK: private unnamed_addr constant{{.*}}3 32 5 3 AAA 64 55 3 BBB 160 555 3 CCC\0
+; CHECK: private unnamed_addr constant{{.*}}3 256 128 3 CCC 448 128 3 BBB 608 128 3 AAA\0
+; CHECK: private unnamed_addr constant{{.*}}2 32 4 3 AAA 48 4 5 BBB:7\0
define void @Func1() sanitize_address {
entry:
@@ -77,3 +80,36 @@ entry:
store volatile i8 0, i8* %arr3.ptr
ret void
}
+
+; Check that line numbers are attached to variable names if variable
+; in the same file as a function.
+define void @Func5() sanitize_address #0 !dbg !11 {
+ %AAA = alloca i32, align 4 ; File is not the same as !11
+ %BBB = alloca i32, align 4 ; File is the same as !11
+ %BBB.ptr = bitcast i32* %BBB to i8*
+ call void @llvm.lifetime.start(i64 4, i8* nonnull %BBB.ptr), !dbg !12
+ store volatile i32 5, i32* %BBB, align 4
+ %AAA.ptr = bitcast i32* %AAA to i8*
+ call void @llvm.lifetime.start(i64 4, i8* nonnull %AAA.ptr), !dbg !14
+ store volatile i32 3, i32* %AAA, align 4
+ call void @llvm.lifetime.end(i64 4, i8* nonnull %AAA.ptr), !dbg !17
+ call void @llvm.lifetime.end(i64 4, i8* nonnull %BBB.ptr), !dbg !18
+ ret void
+}
+
+!llvm.dbg.cu = !{!0}
+!llvm.module.flags = !{!3, !4}
+!3 = !{i32 2, !"Dwarf Version", i32 4}
+!4 = !{i32 2, !"Debug Info Version", i32 3}
+
+!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1)
+!1 = !DIFile(filename: "../file1.c", directory: "/")
+!11 = distinct !DISubprogram(name: "Func5", scope: !1, file: !1, line: 6, unit: !0)
+!12 = !DILocation(line: 7, column: 3, scope: !11)
+!18 = !DILocation(line: 10, column: 1, scope: !11)
+
+!21 = !DIFile(filename: "../file2.c", directory: "/")
+!6 = distinct !DISubprogram(name: "Func4", scope: !1, file: !21, line: 2, unit: !0)
+!15 = distinct !DILocation(line: 8, column: 3, scope: !11)
+!14 = !DILocation(line: 3, column: 3, scope: !6, inlinedAt: !15)
+!17 = !DILocation(line: 4, column: 1, scope: !6, inlinedAt: !15)
OpenPOWER on IntegriCloud