Skip to content

Commit 0525581

Browse files
committed
[DSE] Add additional tests for escape analysis in DSE (NFC)
1 parent df26417 commit 0525581

File tree

1 file changed

+54
-1
lines changed
  • llvm/test/Transforms/DeadStoreElimination

1 file changed

+54
-1
lines changed

llvm/test/Transforms/DeadStoreElimination/simple.ll

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,59 @@ define void @custom_malloc_no_escape() {
304304
ret void
305305
}
306306

307+
declare void @use.ptr(ptr)
308+
309+
define void @malloc_no_escape_via_attr() {
310+
; CHECK-LABEL: @malloc_no_escape_via_attr(
311+
; CHECK-NEXT: [[M:%.*]] = call ptr @malloc(i64 24)
312+
; CHECK-NEXT: call void @use.ptr(ptr captures(none) [[M]])
313+
; CHECK-NEXT: ret void
314+
;
315+
%m = call ptr @malloc(i64 24)
316+
call void @use.ptr(ptr captures(none) %m)
317+
store i8 0, ptr %m
318+
ret void
319+
}
320+
321+
define void @malloc_address_only_escape() {
322+
; CHECK-LABEL: @malloc_address_only_escape(
323+
; CHECK-NEXT: [[M:%.*]] = call ptr @malloc(i64 24)
324+
; CHECK-NEXT: call void @use.ptr(ptr captures(address) [[M]])
325+
; CHECK-NEXT: store i8 0, ptr [[M]], align 1
326+
; CHECK-NEXT: ret void
327+
;
328+
%m = call ptr @malloc(i64 24)
329+
call void @use.ptr(ptr captures(address) %m)
330+
store i8 0, ptr %m
331+
ret void
332+
}
333+
334+
define void @malloc_provenance_escape() {
335+
; CHECK-LABEL: @malloc_provenance_escape(
336+
; CHECK-NEXT: [[M:%.*]] = call ptr @malloc(i64 24)
337+
; CHECK-NEXT: call void @use.ptr(ptr captures(provenance) [[M]])
338+
; CHECK-NEXT: store i8 0, ptr [[M]], align 1
339+
; CHECK-NEXT: ret void
340+
;
341+
%m = call ptr @malloc(i64 24)
342+
call void @use.ptr(ptr captures(provenance) %m)
343+
store i8 0, ptr %m
344+
ret void
345+
}
346+
347+
define void @malloc_read_provenance_escape() {
348+
; CHECK-LABEL: @malloc_read_provenance_escape(
349+
; CHECK-NEXT: [[M:%.*]] = call ptr @malloc(i64 24)
350+
; CHECK-NEXT: call void @use.ptr(ptr captures(read_provenance) [[M]])
351+
; CHECK-NEXT: store i8 0, ptr [[M]], align 1
352+
; CHECK-NEXT: ret void
353+
;
354+
%m = call ptr @malloc(i64 24)
355+
call void @use.ptr(ptr captures(read_provenance) %m)
356+
store i8 0, ptr %m
357+
ret void
358+
}
359+
307360
define void @test21() {
308361
; CHECK-LABEL: @test21(
309362
; CHECK-NEXT: ret void
@@ -484,7 +537,7 @@ define i32 @test32(i1 %c, ptr %p, i32 %i, i1 %arg) {
484537
; CHECK: bb1:
485538
; CHECK-NEXT: store i32 [[V]], ptr [[P]], align 4
486539
; CHECK-NEXT: call void @unknown_func()
487-
; CHECK-NEXT: br i1 %arg, label [[BB1]], label [[BB2:%.*]]
540+
; CHECK-NEXT: br i1 [[ARG:%.*]], label [[BB1]], label [[BB2:%.*]]
488541
; CHECK: bb2:
489542
; CHECK-NEXT: ret i32 0
490543
;

0 commit comments

Comments
 (0)