xref: /llvm-project/llvm/test/Instrumentation/AddressSanitizer/experiment-call.ll (revision 855fe35064674c4601ea9c659a015cacdcec9f63)
1; Test optimization experiments.
2; -asan-force-experiment flag turns all memory accesses into experiments.
3; RUN: opt < %s -passes=asan -asan-force-experiment=42 -asan-instrumentation-with-call-threshold=0 -S | FileCheck %s
4target 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"
5target triple = "x86_64-unknown-linux-gnu"
6
7define void @load1(ptr %p) sanitize_address {
8entry:
9  %t = load i8, ptr %p, align 1
10  ret void
11; CHECK-LABEL: define void @load1
12; CHECK: __asan_exp_load1{{.*}} i32 42
13; CHECK: ret void
14}
15
16define void @load2(ptr %p) sanitize_address {
17entry:
18  %t = load i16, ptr %p, align 2
19  ret void
20; CHECK-LABEL: define void @load2
21; CHECK: __asan_exp_load2{{.*}} i32 42
22; CHECK: ret void
23}
24
25define void @load4(ptr %p) sanitize_address {
26entry:
27  %t = load i32, ptr %p, align 4
28  ret void
29; CHECK-LABEL: define void @load4
30; CHECK: __asan_exp_load4{{.*}} i32 42
31; CHECK: ret void
32}
33
34define void @load8(ptr %p) sanitize_address {
35entry:
36  %t = load i64, ptr %p, align 8
37  ret void
38; CHECK-LABEL: define void @load8
39; CHECK: __asan_exp_load8{{.*}} i32 42
40; CHECK: ret void
41}
42
43define void @load16(ptr %p) sanitize_address {
44entry:
45  %t = load i128, ptr %p, align 16
46  ret void
47; CHECK-LABEL: define void @load16
48; CHECK: __asan_exp_load16{{.*}} i32 42
49; CHECK: ret void
50}
51
52define void @loadN(ptr %p) sanitize_address {
53entry:
54  %t = load i48, ptr %p, align 1
55  ret void
56; CHECK-LABEL: define void @loadN
57; CHECK: __asan_exp_loadN{{.*}} i32 42
58; CHECK: ret void
59}
60
61define void @store1(ptr %p) sanitize_address {
62entry:
63  store i8 1, ptr %p, align 1
64  ret void
65; CHECK-LABEL: define void @store1
66; CHECK: __asan_exp_store1{{.*}} i32 42
67; CHECK: ret void
68}
69
70define void @store2(ptr %p) sanitize_address {
71entry:
72  store i16 1, ptr %p, align 2
73  ret void
74; CHECK-LABEL: define void @store2
75; CHECK: __asan_exp_store2{{.*}} i32 42
76; CHECK: ret void
77}
78
79define void @store4(ptr %p) sanitize_address {
80entry:
81  store i32 1, ptr %p, align 4
82  ret void
83; CHECK-LABEL: define void @store4
84; CHECK: __asan_exp_store4{{.*}} i32 42
85; CHECK: ret void
86}
87
88define void @store8(ptr %p) sanitize_address {
89entry:
90  store i64 1, ptr %p, align 8
91  ret void
92; CHECK-LABEL: define void @store8
93; CHECK: __asan_exp_store8{{.*}} i32 42
94; CHECK: ret void
95}
96
97define void @store16(ptr %p) sanitize_address {
98entry:
99  store i128 1, ptr %p, align 16
100  ret void
101; CHECK-LABEL: define void @store16
102; CHECK: __asan_exp_store16{{.*}} i32 42
103; CHECK: ret void
104}
105
106define void @storeN(ptr %p) sanitize_address {
107entry:
108  store i48 1, ptr %p, align 1
109  ret void
110; CHECK-LABEL: define void @storeN
111; CHECK: __asan_exp_storeN{{.*}} i32 42
112; CHECK: ret void
113}
114