================
@@ -79,25 +79,32 @@ void test_array_destructor() {
// CIR: %[[CMP:.*]] = cir.cmp(ne, %[[ARR_CUR]], %[[ARR_END]])
// CIR: cir.condition(%[[CMP]])
// CIR: }
-// CIR: %[[FOUR:.*]] = cir.const #cir.int<4> : !u64i
-// CIR: %[[BEGIN:.*]] = cir.cast array_to_ptrdecay %[[ARR]] :
!cir.ptr<!cir.array<!rec_array_element x 5>>
-// CIR: %[[END:.*]] = cir.ptr_stride %[[BEGIN]], %[[FOUR]] :
(!cir.ptr<!rec_array_element>, !u64i)
-// CIR: %[[ARR_PTR:.*]] = cir.alloca !cir.ptr<!rec_array_element>,
!cir.ptr<!cir.ptr<!rec_array_element>>, ["__array_idx"]
-// CIR: cir.store %[[END]], %[[ARR_PTR]]
-// CIR: cir.do {
-// CIR: %[[ARR_CUR:.*]] = cir.load{{.*}} %[[ARR_PTR]]
-// CIR: cir.call @_ZN13array_elementD1Ev(%[[ARR_CUR]]) nothrow :
(!cir.ptr<!rec_array_element>) -> ()
-// CIR: %[[NEG_ONE:.*]] = cir.const #cir.int<-1> : !s64i
-// CIR: %[[ARR_NEXT:.*]] = cir.ptr_stride %[[ARR_CUR]], %[[NEG_ONE]] :
(!cir.ptr<!rec_array_element>, !s64i)
-// CIR: cir.store %[[ARR_NEXT]], %[[ARR_PTR]]
+// CIR: cir.cleanup.scope {
+// CIR: cir.yield
+// CIR: } cleanup normal {
+// CIR: %[[FOUR:.*]] = cir.const #cir.int<4> : !u64i
+// CIR: %[[BEGIN:.*]] = cir.cast array_to_ptrdecay %[[ARR]] :
!cir.ptr<!cir.array<!rec_array_element x 5>>
+// CIR: %[[END:.*]] = cir.ptr_stride %[[BEGIN]], %[[FOUR]] :
(!cir.ptr<!rec_array_element>, !u64i)
+// CIR: %[[ARR_PTR:.*]] = cir.alloca !cir.ptr<!rec_array_element>,
!cir.ptr<!cir.ptr<!rec_array_element>>, ["__array_idx"]
+// CIR: cir.store %[[END]], %[[ARR_PTR]]
+// CIR: cir.do {
+// CIR: %[[ARR_CUR:.*]] = cir.load{{.*}} %[[ARR_PTR]]
+// CIR: cir.call @_ZN13array_elementD1Ev(%[[ARR_CUR]]) nothrow :
(!cir.ptr<!rec_array_element>) -> ()
+// CIR: %[[NEG_ONE:.*]] = cir.const #cir.int<-1> : !s64i
+// CIR: %[[ARR_NEXT:.*]] = cir.ptr_stride %[[ARR_CUR]], %[[NEG_ONE]] :
(!cir.ptr<!rec_array_element>, !s64i)
+// CIR: cir.store %[[ARR_NEXT]], %[[ARR_PTR]]
+// CIR: cir.yield
+// CIR: } while {
+// CIR: %[[ARR_CUR:.*]] = cir.load{{.*}} %[[ARR_PTR]]
+// CIR: %[[CMP:.*]] = cir.cmp(ne, %[[ARR_CUR]], %[[BEGIN]])
+// CIR: cir.condition(%[[CMP]])
+// CIR: }
// CIR: cir.yield
-// CIR: } while {
-// CIR: %[[ARR_CUR:.*]] = cir.load{{.*}} %[[ARR_PTR]]
-// CIR: %[[CMP:.*]] = cir.cmp(ne, %[[ARR_CUR]], %[[BEGIN]])
-// CIR: cir.condition(%[[CMP]])
// CIR: }
+
// LLVM: define{{.*}} void @_Z21test_array_destructorv()
+// LLVM: %[[ARR_CUR:.*]] = alloca ptr, i64 1
----------------
andykaylor wrote:
```suggestion
// LLVM: %[[ARR_CUR:.*]] = alloca ptr
```
https://github.com/llvm/llvm-project/pull/180276
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits