@@ -173,7 +173,7 @@ define void @test_param(ptr %a, ptr %b) sanitize_memory {
173
173
; CHECK-NEXT: [[_MSCMP:%.*]] = icmp ne i32 [[TMP6]], 0
174
174
; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP7:%.*]], label [[TMP8:%.*]], !prof [[PROF0:![0-9]+]]
175
175
; CHECK: 7:
176
- ; CHECK-NEXT: call void @__msan_warning_noreturn() #[[ATTR4 :[0-9]+]]
176
+ ; CHECK-NEXT: call void @__msan_warning_noreturn() #[[ATTR5 :[0-9]+]]
177
177
; CHECK-NEXT: unreachable
178
178
; CHECK: 8:
179
179
; CHECK-NEXT: call void @fn_param(<vscale x 2 x float> [[TMP2]], ptr [[B]])
@@ -183,6 +183,63 @@ define void @test_param(ptr %a, ptr %b) sanitize_memory {
183
183
call void @fn_param (<vscale x 2 x float > %1 , ptr %b )
184
184
ret void
185
185
}
186
+
187
+ define void @test_alloca1 () sanitize_memory {
188
+ ; CHECK-LABEL: define void @test_alloca1(
189
+ ; CHECK-SAME: ) #[[ATTR0]] {
190
+ ; CHECK-NEXT: entry:
191
+ ; CHECK-NEXT: call void @llvm.donothing()
192
+ ; CHECK-NEXT: [[X:%.*]] = alloca <vscale x 64 x i1>, align 4
193
+ ; CHECK-NEXT: [[TMP0:%.*]] = call i64 @llvm.vscale.i64()
194
+ ; CHECK-NEXT: [[TMP1:%.*]] = mul i64 [[TMP0]], 8
195
+ ; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[X]] to i64
196
+ ; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
197
+ ; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
198
+ ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 4 [[TMP4]], i8 -1, i64 [[TMP1]], i1 false)
199
+ ; CHECK-NEXT: ret void
200
+ ;
201
+ entry:
202
+ %x = alloca <vscale x 64 x i1 >, align 4
203
+ ret void
204
+ }
205
+
206
+ define void @test_alloca2 () sanitize_memory {
207
+ ; CHECK-LABEL: define void @test_alloca2(
208
+ ; CHECK-SAME: ) #[[ATTR0]] {
209
+ ; CHECK-NEXT: entry:
210
+ ; CHECK-NEXT: call void @llvm.donothing()
211
+ ; CHECK-NEXT: [[X:%.*]] = alloca <vscale x 64 x double>, align 4
212
+ ; CHECK-NEXT: [[TMP0:%.*]] = call i64 @llvm.vscale.i64()
213
+ ; CHECK-NEXT: [[TMP1:%.*]] = mul i64 [[TMP0]], 512
214
+ ; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[X]] to i64
215
+ ; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
216
+ ; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
217
+ ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 4 [[TMP4]], i8 -1, i64 [[TMP1]], i1 false)
218
+ ; CHECK-NEXT: ret void
219
+ ;
220
+ entry:
221
+ %x = alloca <vscale x 64 x double >, align 4
222
+ ret void
223
+ }
224
+
225
+ define void @test_alloca3 () sanitize_memory {
226
+ ; CHECK-LABEL: define void @test_alloca3(
227
+ ; CHECK-SAME: ) #[[ATTR0]] {
228
+ ; CHECK-NEXT: entry:
229
+ ; CHECK-NEXT: call void @llvm.donothing()
230
+ ; CHECK-NEXT: [[X:%.*]] = alloca <vscale x 1 x i1>, align 4
231
+ ; CHECK-NEXT: [[TMP0:%.*]] = call i64 @llvm.vscale.i64()
232
+ ; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[X]] to i64
233
+ ; CHECK-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
234
+ ; CHECK-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
235
+ ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 4 [[TMP3]], i8 -1, i64 [[TMP0]], i1 false)
236
+ ; CHECK-NEXT: ret void
237
+ ;
238
+ entry:
239
+ %x = alloca <vscale x 1 x i1 >, align 4
240
+ ret void
241
+ }
242
+
186
243
;.
187
244
; CHECK: [[PROF0]] = !{!"branch_weights", i32 1, i32 1048575}
188
245
;.
0 commit comments