xref: /aosp_15_r20/external/llvm/test/Instrumentation/DataFlowSanitizer/store.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -dfsan -dfsan-combine-pointer-labels-on-store=1 -S | FileCheck %s --check-prefix=COMBINE_PTR_LABEL
2*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -dfsan -dfsan-combine-pointer-labels-on-store=0 -S | FileCheck %s --check-prefix=NO_COMBINE_PTR_LABEL
3*9880d681SAndroid Build Coastguard Workertarget 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"
4*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-unknown-linux-gnu"
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdefine void @store0({} %v, {}* %p) {
7*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: @"dfs$store0"
8*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: store
9*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL-NOT: store
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: @"dfs$store0"
12*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: store
13*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL-NOT: store
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker  store {} %v, {}* %p
16*9880d681SAndroid Build Coastguard Worker  ret void
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerdefine void @store8(i8 %v, i8* %p) {
20*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: @"dfs$store8"
21*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: load i16, i16* {{.*}} @__dfsan_arg_tls
22*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: ptrtoint i8* {{.*}} i64
23*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: and i64
24*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: mul i64
25*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: inttoptr i64 {{.*}} i16*
26*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: getelementptr i16, i16*
27*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: store i16
28*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: store i8
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: @"dfs$store8"
31*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: load i16, i16*
32*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: load i16, i16*
33*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: icmp ne i16
34*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: call {{.*}} @__dfsan_union
35*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: ptrtoint i8* {{.*}} i64
36*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: and i64
37*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: mul i64
38*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: inttoptr i64 {{.*}} i16*
39*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: getelementptr i16, i16*
40*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: store i16
41*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: store i8
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Worker  store i8 %v, i8* %p
44*9880d681SAndroid Build Coastguard Worker  ret void
45*9880d681SAndroid Build Coastguard Worker}
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Workerdefine void @store16(i16 %v, i16* %p) {
48*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: @"dfs$store16"
49*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: load i16, i16* {{.*}} @__dfsan_arg_tls
50*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: ptrtoint i16* {{.*}} i64
51*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: and i64
52*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: mul i64
53*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: inttoptr i64 {{.*}} i16*
54*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: getelementptr i16, i16*
55*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: store i16
56*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: getelementptr i16, i16*
57*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: store i16
58*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: store i16
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: @"dfs$store16"
61*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: load i16, i16* {{.*}} @__dfsan_arg_tls
62*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: load i16, i16* {{.*}} @__dfsan_arg_tls
63*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: icmp ne i16
64*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: call {{.*}} @__dfsan_union
65*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: ptrtoint i16* {{.*}} i64
66*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: and i64
67*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: mul i64
68*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: inttoptr i64 {{.*}} i16*
69*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: getelementptr i16, i16*
70*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: store i16
71*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: getelementptr i16, i16*
72*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: store i16
73*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: store i16
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Worker  store i16 %v, i16* %p
76*9880d681SAndroid Build Coastguard Worker  ret void
77*9880d681SAndroid Build Coastguard Worker}
78*9880d681SAndroid Build Coastguard Worker
79*9880d681SAndroid Build Coastguard Workerdefine void @store32(i32 %v, i32* %p) {
80*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: @"dfs$store32"
81*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: load i16, i16* {{.*}} @__dfsan_arg_tls
82*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: ptrtoint i32* {{.*}} i64
83*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: and i64
84*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: mul i64
85*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: inttoptr i64 {{.*}} i16*
86*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: getelementptr i16, i16*
87*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: store i16
88*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: getelementptr i16, i16*
89*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: store i16
90*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: getelementptr i16, i16*
91*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: store i16
92*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: getelementptr i16, i16*
93*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: store i16
94*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: store i32
95*9880d681SAndroid Build Coastguard Worker
96*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: @"dfs$store32"
97*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: load i16, i16* {{.*}} @__dfsan_arg_tls
98*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: load i16, i16* {{.*}} @__dfsan_arg_tls
99*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: icmp ne i16
100*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: call {{.*}} @__dfsan_union
101*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: ptrtoint i32* {{.*}} i64
102*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: and i64
103*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: mul i64
104*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: inttoptr i64 {{.*}} i16*
105*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: getelementptr i16, i16*
106*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: store i16
107*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: getelementptr i16, i16*
108*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: store i16
109*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: getelementptr i16, i16*
110*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: store i16
111*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: getelementptr i16, i16*
112*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: store i16
113*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: store i32
114*9880d681SAndroid Build Coastguard Worker
115*9880d681SAndroid Build Coastguard Worker  store i32 %v, i32* %p
116*9880d681SAndroid Build Coastguard Worker  ret void
117*9880d681SAndroid Build Coastguard Worker}
118*9880d681SAndroid Build Coastguard Worker
119*9880d681SAndroid Build Coastguard Workerdefine void @store64(i64 %v, i64* %p) {
120*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: @"dfs$store64"
121*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: load i16, i16* {{.*}} @__dfsan_arg_tls
122*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: ptrtoint i64* {{.*}} i64
123*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: and i64
124*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: mul i64
125*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: inttoptr i64 {{.*}} i16*
126*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: insertelement {{.*}} i16
127*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: insertelement {{.*}} i16
128*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: insertelement {{.*}} i16
129*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: insertelement {{.*}} i16
130*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: insertelement {{.*}} i16
131*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: insertelement {{.*}} i16
132*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: insertelement {{.*}} i16
133*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: insertelement {{.*}} i16
134*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: bitcast i16* {{.*}} <8 x i16>*
135*9880d681SAndroid Build Coastguard Worker  ; NO_COMBINE_PTR_LABEL: store i64
136*9880d681SAndroid Build Coastguard Worker
137*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: @"dfs$store64"
138*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: load i16, i16* {{.*}} @__dfsan_arg_tls
139*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: load i16, i16* {{.*}} @__dfsan_arg_tls
140*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: icmp ne i16
141*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: call {{.*}} @__dfsan_union
142*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: ptrtoint i64* {{.*}} i64
143*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: and i64
144*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: mul i64
145*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: inttoptr i64 {{.*}} i16*
146*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: insertelement {{.*}} i16
147*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: insertelement {{.*}} i16
148*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: insertelement {{.*}} i16
149*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: insertelement {{.*}} i16
150*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: insertelement {{.*}} i16
151*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: insertelement {{.*}} i16
152*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: insertelement {{.*}} i16
153*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: insertelement {{.*}} i16
154*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: bitcast i16* {{.*}} <8 x i16>*
155*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: store <8 x i16>
156*9880d681SAndroid Build Coastguard Worker  ; COMBINE_PTR_LABEL: store i64
157*9880d681SAndroid Build Coastguard Worker
158*9880d681SAndroid Build Coastguard Worker  store i64 %v, i64* %p
159*9880d681SAndroid Build Coastguard Worker  ret void
160*9880d681SAndroid Build Coastguard Worker}
161