[llvm] [InferAddressSpaces] Handle llvm.lifetime (PR #141045)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu May 22 05:41:57 PDT 2025
================
@@ -0,0 +1,42 @@
+; RUN: opt -S -passes=infer-address-spaces %s | FileCheck %s
+
+target triple = "nvptx64-nvidia-cuda"
+
+define i32 @lifetime_flat_pointer() {
+; CHECK-LABEL: define i32 @lifetime_flat_pointer() {
+; CHECK-NEXT: [[ALLOCA:%.*]] = alloca i32, align 4, addrspace(5)
+; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[ALLOCA]])
+; CHECK-NEXT: store i32 1, ptr addrspace(5) [[ALLOCA]], align 4
+; CHECK-NEXT: %ret = load i32, ptr addrspace(5) [[ALLOCA]], align 4
+; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[ALLOCA]])
+; CHECK-NEXT: ret i32 %ret
+;
+ %alloca = alloca i32, align 4, addrspace(5)
+ %flat = addrspacecast ptr addrspace(5) %alloca to ptr
+ call void @llvm.lifetime.start.p0(i64 4 , ptr %flat)
+ store i32 1, ptr %flat, align 4
+ %ret = load i32, ptr %flat, align 4
+ call void @llvm.lifetime.end.p0(i64 4 , ptr %flat)
+ ret i32 %ret
+}
+
+define i32 @lifetime_flat_pointer2() {
+; CHECK-LABEL: define i32 @lifetime_flat_pointer2() {
+; CHECK-NEXT: [[ALLOCA:%.*]] = alloca i32, align 4
+; CHECK-NEXT: [[TMP1:%.*]] = addrspacecast ptr [[ALLOCA]] to ptr addrspace(5)
+; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[TMP1]])
+; CHECK-NEXT: store i32 1, ptr addrspace(5) [[TMP1]], align 4
+; CHECK-NEXT: %ret = load i32, ptr addrspace(5) [[TMP1]], align 4
+; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[TMP1]])
+; CHECK-NEXT: ret i32 %ret
+;
+ %alloca = alloca i32, align 4
+ call void @llvm.lifetime.start.p5(i64 4 , ptr %alloca)
+ store i32 1, ptr %alloca, align 4
+ %ret = load i32, ptr %alloca, align 4
+ call void @llvm.lifetime.end.p5(i64 4 , ptr %alloca)
----------------
arsenm wrote:
```suggestion
call void @llvm.lifetime.start.p5(i64 4, ptr %alloca)
store i32 1, ptr %alloca, align 4
%ret = load i32, ptr %alloca, align 4
call void @llvm.lifetime.end.p5(i64 4, ptr %alloca)
```
https://github.com/llvm/llvm-project/pull/141045
More information about the llvm-commits
mailing list