[llvm] [DirectX] Legalize lifetime intrinsics for DXIL (PR #148003)
Deric C. via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 11 09:19:58 PDT 2025
================
@@ -15,6 +16,14 @@
; CHECK-SM66-NEXT: store i32 0, ptr [[GEP]], align 4
; CHECK-SM66-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[ACCUM_I_FLAT]])
;
+; CHECK-PREPARE-NEXT: [[ACCUM_I_FLAT:%.*]] = alloca [1 x i32], align 4
+; CHECK-PREPARE-NEXT: [[GEP:%.*]] = getelementptr i32, ptr [[ACCUM_I_FLAT]], i32 0
+; CHECK-PREPARE-NEXT: [[BITCAST:%.*]] = bitcast ptr [[ACCUM_I_FLAT]] to ptr
+; CHECK-PREPARE-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[BITCAST]])
+; CHECK-PREPARE-NEXT: store i32 0, ptr [[GEP]], align 4
+; CHECK-PREPARE-NEXT: [[BITCAST:%.*]] = bitcast ptr [[ACCUM_I_FLAT]] to ptr
----------------
Icohedron wrote:
I tried but different CHECK prefixes have their own scopes for variables.
For example if I do
```
; CHECK: [[ACCUM_I_FLAT:%.*]] = alloca [1 x i32], align 4
```
Then these lines will all fail FileCheck due to undefined variable `[[ACCUM_I_FLAT]]`
```
; CHECK-SM63-NEXT: store [1 x i32] undef, ptr [[ACCUM_I_FLAT]], align 4
; CHECK-SM66-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[ACCUM_I_FLAT]])
; CHECK-PREPARE-NEXT: [[BITCAST:%.*]] = bitcast ptr [[ACCUM_I_FLAT]] to ptr
```
https://github.com/llvm/llvm-project/pull/148003
More information about the llvm-commits
mailing list