Skip to content

Commit a170eb5

Browse files
committed
Add lifetime tests
1 parent 0276915 commit a170eb5

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

llvm/test/Transforms/SROA/readonlynocapture.ll

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,4 +456,49 @@ define i32 @provenance_only_capture() {
456456
ret i32 %l1
457457
}
458458

459+
define i32 @simple_with_lifetimes() {
460+
; CHECK-LABEL: @simple_with_lifetimes(
461+
; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4
462+
; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A]])
463+
; CHECK-NEXT: store i32 0, ptr [[A]], align 4
464+
; CHECK-NEXT: call void @callee(ptr [[A]])
465+
; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[A]])
466+
; CHECK-NEXT: ret i32 0
467+
;
468+
%a = alloca i32
469+
call void @llvm.lifetime.start(i64 4, ptr %a)
470+
store i32 0, ptr %a
471+
call void @callee(ptr %a)
472+
%l1 = load i32, ptr %a
473+
call void @llvm.lifetime.end(i64 4, ptr %a)
474+
ret i32 %l1
475+
}
476+
477+
define i32 @twoalloc_with_lifetimes() {
478+
; CHECK-LABEL: @twoalloc_with_lifetimes(
479+
; CHECK-NEXT: [[A:%.*]] = alloca { i32, i32 }, align 8
480+
; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[A]])
481+
; CHECK-NEXT: store i32 0, ptr [[A]], align 4
482+
; CHECK-NEXT: [[B:%.*]] = getelementptr i32, ptr [[A]], i32 1
483+
; CHECK-NEXT: store i32 1, ptr [[B]], align 4
484+
; CHECK-NEXT: call void @callee(ptr [[A]])
485+
; CHECK-NEXT: [[L1:%.*]] = load i32, ptr [[A]], align 4
486+
; CHECK-NEXT: [[L2:%.*]] = load i32, ptr [[B]], align 4
487+
; CHECK-NEXT: [[R:%.*]] = add i32 [[L1]], [[L2]]
488+
; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[A]])
489+
; CHECK-NEXT: ret i32 [[R]]
490+
;
491+
%a = alloca {i32, i32}
492+
call void @llvm.lifetime.start(i64 8, ptr %a)
493+
store i32 0, ptr %a
494+
%b = getelementptr i32, ptr %a, i32 1
495+
store i32 1, ptr %b
496+
call void @callee(ptr %a)
497+
%l1 = load i32, ptr %a
498+
%l2 = load i32, ptr %b
499+
%r = add i32 %l1, %l2
500+
call void @llvm.lifetime.end(i64 8, ptr %a)
501+
ret i32 %r
502+
}
503+
459504
declare void @llvm.memcpy.p0.p0.i64(ptr, ptr, i64, i1)

0 commit comments

Comments
 (0)