|
1 | 1 | ; Test handling of llvm.lifetime intrinsics.
|
2 |
| -; RUN: opt < %s -asan -asan-module -asan-use-after-scope -asan-use-after-return=0 -S | FileCheck %s |
3 |
| -; RUN: opt < %s -asan -asan-module -asan-use-after-scope -asan-use-after-return=0 -asan-instrument-dynamic-allocas=0 -S | FileCheck %s --check-prefix=CHECK-NO-DYNAMIC |
| 2 | +; RUN: opt < %s -asan -asan-module -asan-use-after-scope -asan-use-after-return=0 -S | FileCheck %s --check-prefixes=CHECK,CHECK-DEFAULT |
| 3 | +; RUN: opt < %s -asan -asan-module -asan-use-after-scope -asan-use-after-return=0 -asan-instrument-dynamic-allocas=0 -S | FileCheck %s --check-prefixes=CHECK,CHECK-NO-DYNAMIC |
| 4 | +; RUN: opt < %s -asan -asan-module -asan-use-after-scope -asan-use-after-return=0 -asan-skip-ambiguous-lifetime-allocas=0 -S | FileCheck %s --check-prefixes=CHECK,CHECK-AMBIGUOUS |
4 | 5 |
|
5 | 6 | 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"
|
6 | 7 | target triple = "x86_64-unknown-linux-gnu"
|
@@ -69,14 +70,14 @@ define void @lifetime() sanitize_address {
|
69 | 70 | %arr.ptr = bitcast [10 x i32]* %arr to i8*
|
70 | 71 |
|
71 | 72 | call void @llvm.lifetime.start(i64 40, i8* %arr.ptr)
|
72 |
| - ; CHECK: call void @__asan_unpoison_stack_memory(i64 %{{[^ ]+}}, i64 40) |
| 73 | + ; CHECK-DEFAULT: call void @__asan_unpoison_stack_memory(i64 %{{[^ ]+}}, i64 40) |
73 | 74 | ; CHECK-NO-DYNAMIC-NOT: call void @__asan_unpoison_stack_memory(i64 %{{[^ ]+}}, i64 40)
|
74 | 75 |
|
75 | 76 | store volatile i8 0, i8* %arr.ptr
|
76 | 77 | ; CHECK: store volatile
|
77 | 78 |
|
78 | 79 | call void @llvm.lifetime.end(i64 40, i8* %arr.ptr)
|
79 |
| - ; CHECK: call void @__asan_poison_stack_memory(i64 %{{[^ ]+}}, i64 40) |
| 80 | + ; CHECK-DEFAULT: call void @__asan_poison_stack_memory(i64 %{{[^ ]+}}, i64 40) |
80 | 81 | ; CHECK-NO-DYNAMIC-NOT: call void @__asan_poison_stack_memory(i64 %{{[^ ]+}}, i64 40)
|
81 | 82 |
|
82 | 83 | ; One more lifetime start/end for the same variable %i.
|
|
116 | 117 | ; CHECK-LABEL: bb0:
|
117 | 118 |
|
118 | 119 | call void @llvm.lifetime.start(i64 1, i8* %j)
|
119 |
| - ; CHECK-NOT: store i8 1, i8* %{{[0-9]+}} |
| 120 | + ; CHECK-DEFAULT-NOT: store i8 1, i8* %{{[0-9]+}} |
| 121 | + ; CHECK-AMBIGUOUS: store i8 1, i8* %{{[0-9]+}} |
120 | 122 | ; CHECK-NEXT: call void @llvm.lifetime.start
|
121 | 123 |
|
122 | 124 | br label %bb1
|
|
132 | 134 | ; CHECK-NEXT: call void @llvm.lifetime.end
|
133 | 135 |
|
134 | 136 | call void @llvm.lifetime.end(i64 1, i8* %j)
|
135 |
| - ; CHECK-NOT: store i8 -8, i8* %{{[0-9]+}} |
| 137 | + ; CHECK-DEFAULT-NOT: store i8 -8, i8* %{{[0-9]+}} |
| 138 | + ; CHECK-AMBIGUOUS: store i8 -8, i8* %{{[0-9]+}} |
136 | 139 | ; CHECK-NEXT: call void @llvm.lifetime.end
|
137 | 140 |
|
138 | 141 | ret void
|
|
0 commit comments