@@ -324,18 +324,27 @@ define i8* @store_zero_after_calloc_inaccessiblememonly() {
324
324
define i8* @zero_memset_after_calloc () {
325
325
; CHECK-LABEL: @zero_memset_after_calloc(
326
326
; CHECK-NEXT: [[CALL:%.*]] = tail call i8* @calloc(i64 10000, i64 4)
327
- ; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[CALL]], i8 0, i64 40000, i1 false)
328
327
; CHECK-NEXT: ret i8* [[CALL]]
329
328
;
330
329
%call = tail call i8* @calloc (i64 10000 , i64 4 )
331
330
call void @llvm.memset.p0i8.i64 (i8* %call , i8 0 , i64 40000 , i1 false )
332
331
ret i8* %call
333
332
}
334
333
334
+ define i8* @volatile_zero_memset_after_calloc () {
335
+ ; CHECK-LABEL: @volatile_zero_memset_after_calloc(
336
+ ; CHECK-NEXT: [[CALL:%.*]] = tail call i8* @calloc(i64 10000, i64 4)
337
+ ; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[CALL]], i8 0, i64 40000, i1 true)
338
+ ; CHECK-NEXT: ret i8* [[CALL]]
339
+ ;
340
+ %call = tail call i8* @calloc (i64 10000 , i64 4 )
341
+ call void @llvm.memset.p0i8.i64 (i8* %call , i8 0 , i64 40000 , i1 true )
342
+ ret i8* %call
343
+ }
344
+
335
345
define i8* @zero_memset_and_store_after_calloc (i8 %v ) {
336
346
; CHECK-LABEL: @zero_memset_and_store_after_calloc(
337
347
; CHECK-NEXT: [[CALL:%.*]] = tail call i8* @calloc(i64 10000, i64 4)
338
- ; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[CALL]], i8 0, i64 40000, i1 false)
339
348
; CHECK-NEXT: ret i8* [[CALL]]
340
349
;
341
350
%call = tail call i8* @calloc (i64 10000 , i64 4 )
@@ -347,7 +356,6 @@ define i8* @zero_memset_and_store_after_calloc(i8 %v) {
347
356
define i8* @partial_zero_memset_after_calloc () {
348
357
; CHECK-LABEL: @partial_zero_memset_after_calloc(
349
358
; CHECK-NEXT: [[CALL:%.*]] = tail call i8* @calloc(i64 10000, i64 4)
350
- ; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[CALL]], i8 0, i64 20, i1 false)
351
359
; CHECK-NEXT: ret i8* [[CALL]]
352
360
;
353
361
%call = tail call i8* @calloc (i64 10000 , i64 4 )
@@ -360,7 +368,6 @@ define i8* @partial_zero_memset_and_store_after_calloc(i8 %v) {
360
368
; CHECK-NEXT: [[CALL:%.*]] = tail call i8* @calloc(i64 10000, i64 4)
361
369
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds i8, i8* [[CALL]], i64 30
362
370
; CHECK-NEXT: store i8 [[V:%.*]], i8* [[GEP]], align 1
363
- ; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[CALL]], i8 0, i64 20, i1 false)
364
371
; CHECK-NEXT: ret i8* [[CALL]]
365
372
;
366
373
%call = tail call i8* @calloc (i64 10000 , i64 4 )
@@ -373,7 +380,6 @@ define i8* @partial_zero_memset_and_store_after_calloc(i8 %v) {
373
380
define i8* @zero_memset_and_store_with_dyn_index_after_calloc (i8 %v , i64 %idx ) {
374
381
; CHECK-LABEL: @zero_memset_and_store_with_dyn_index_after_calloc(
375
382
; CHECK-NEXT: [[CALL:%.*]] = tail call i8* @calloc(i64 10000, i64 4)
376
- ; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[CALL]], i8 0, i64 40000, i1 false)
377
383
; CHECK-NEXT: ret i8* [[CALL]]
378
384
;
379
385
%call = tail call i8* @calloc (i64 10000 , i64 4 )
@@ -409,6 +415,16 @@ define i8* @zero_memset_after_calloc_inaccessiblememonly() {
409
415
ret i8* %call
410
416
}
411
417
418
+ define i8* @cst_nonzero_memset_after_calloc () {
419
+ ; CHECK-LABEL: @cst_nonzero_memset_after_calloc(
420
+ ; CHECK-NEXT: [[CALL:%.*]] = tail call i8* @calloc(i64 10000, i64 4)
421
+ ; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* [[CALL]], i8 1, i64 40000, i1 false)
422
+ ; CHECK-NEXT: ret i8* [[CALL]]
423
+ ;
424
+ %call = tail call i8* @calloc (i64 10000 , i64 4 )
425
+ call void @llvm.memset.p0i8.i64 (i8* %call , i8 1 , i64 40000 , i1 false )
426
+ ret i8* %call
427
+ }
412
428
413
429
define i8* @nonzero_memset_after_calloc (i8 %v ) {
414
430
; CHECK-LABEL: @nonzero_memset_after_calloc(
@@ -427,7 +443,6 @@ define i8* @nonzero_memset_after_calloc(i8 %v) {
427
443
define i8* @memset_pattern16_after_calloc (i8* %pat ) {
428
444
; CHECK-LABEL: @memset_pattern16_after_calloc(
429
445
; CHECK-NEXT: [[CALL:%.*]] = tail call i8* @calloc(i64 10000, i64 4)
430
- ; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 4 [[CALL]], i8 0, i64 40000, i1 false)
431
446
; CHECK-NEXT: call void @memset_pattern16(i8* [[CALL]], i8* [[PAT:%.*]], i64 40000)
432
447
; CHECK-NEXT: ret i8* [[CALL]]
433
448
;
0 commit comments