|
1 | 1 | // RUN: %target-run-simple-swift(-parse-sil -Xfrontend -enable-pack-metadata-stack-promotion=true)
|
2 |
| -// RUN: %target-swift-frontend %use_no_opaque_pointers -parse-sil -enable-pack-metadata-stack-promotion=true -emit-ir -primary-file %s | %IRGenFileCheck %s |
3 |
| -// RUN: %target-swift-frontend -parse-sil -enable-pack-metadata-stack-promotion=true -emit-ir -primary-file %s |
| 2 | +// RUN: %target-swift-frontend -parse-sil -enable-pack-metadata-stack-promotion=true -emit-ir -primary-file %s | %IRGenFileCheck %s |
4 | 3 |
|
5 | 4 | // REQUIRES: executable_test
|
6 | 5 |
|
@@ -31,30 +30,30 @@ sil @callee : $@convention(thin) <each T> () -> () {
|
31 | 30 | }
|
32 | 31 |
|
33 | 32 | // CHECK-LABEL: define {{.*}}@looper(
|
34 |
| -// CHECK-SAME: [[INT]] %0, [[INT]] %1, %swift.type** %"each T_1", %swift.type** %"each T_2") {{.*}} { |
| 33 | +// CHECK-SAME: [[INT]] %0, [[INT]] %1, ptr %"each T_1", ptr %"each T_2") {{.*}} { |
35 | 34 | // CHECK: [[ENTRY:entry]]:
|
36 | 35 | // CHECK: br label %[[HEADER:[^,]+]]
|
37 | 36 | // CHECK: [[HEADER]]:
|
38 | 37 | // CHECK: [[PREVIOUS:%[^,]+]] = phi i64 [ 10000000, %[[ENTRY]] ], [ [[REMAINING:%[^,]+]], %{{[^,]+}} ]
|
39 | 38 | // CHECK: [[COMBINED_PACK_SIZE:%[^,]+]] = add [[INT]] %0, %1
|
40 |
| -// CHECK: [[STACK_BEFORE_FIRST_ALLOCA:%[^,]+]] = call i8* @llvm.stacksave() |
41 |
| -// CHECK: [[FIRST_ALLOCA_METADATA_PACK:%[^,]+]] = alloca %swift.type*, [[INT]] [[COMBINED_PACK_SIZE]] |
42 |
| -// CHECK: call swiftcc void @callee([[INT]] [[COMBINED_PACK_SIZE]], %swift.type** [[FIRST_ALLOCA_METADATA_PACK]]) |
| 39 | +// CHECK: [[STACK_BEFORE_FIRST_ALLOCA:%[^,]+]] = call ptr @llvm.stacksave() |
| 40 | +// CHECK: [[FIRST_ALLOCA_METADATA_PACK:%[^,]+]] = alloca ptr, [[INT]] [[COMBINED_PACK_SIZE]] |
| 41 | +// CHECK: call swiftcc void @callee([[INT]] [[COMBINED_PACK_SIZE]], ptr [[FIRST_ALLOCA_METADATA_PACK]]) |
43 | 42 | // CHECK: [[COMBINED_PACK_SIZE_2:%[^,]+]] = add [[INT]] %1, %0
|
44 |
| -// CHECK: [[STACK_BEFORE_SECOND_ALLOCA:%[^,]+]] = call i8* @llvm.stacksave() |
45 |
| -// CHECK: [[SECOND_ALLOCA_METADATA_PACK:%[^,]+]] = alloca %swift.type*, [[INT]] [[COMBINED_PACK_SIZE_2]] |
46 |
| -// CHECK: call swiftcc void @callee([[INT]] [[COMBINED_PACK_SIZE_2]], %swift.type** [[SECOND_ALLOCA_METADATA_PACK]]) |
| 43 | +// CHECK: [[STACK_BEFORE_SECOND_ALLOCA:%[^,]+]] = call ptr @llvm.stacksave() |
| 44 | +// CHECK: [[SECOND_ALLOCA_METADATA_PACK:%[^,]+]] = alloca ptr, [[INT]] [[COMBINED_PACK_SIZE_2]] |
| 45 | +// CHECK: call swiftcc void @callee([[INT]] [[COMBINED_PACK_SIZE_2]], ptr [[SECOND_ALLOCA_METADATA_PACK]]) |
47 | 46 | // CHECK: [[REMAINING_AND_OVERFLOW:%[^,]+]] = call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 [[PREVIOUS]], i64 1)
|
48 | 47 | // CHECK: [[REMAINING]] = extractvalue { i64, i1 } [[REMAINING_AND_OVERFLOW]], 0
|
49 | 48 | // CHECK: [[IS_ZERO:%[^,]+]] = icmp eq i64 [[REMAINING]], 0
|
50 | 49 | // CHECK: br i1 [[IS_ZERO]], label %[[EXIT:[^,]+]], label %[[BACKEDGE:[^,]+]]
|
51 | 50 | // CHECK: [[BACKEDGE]]:
|
52 |
| -// CHECK: call void @llvm.stackrestore(i8* [[STACK_BEFORE_SECOND_ALLOCA]]) |
53 |
| -// CHECK: call void @llvm.stackrestore(i8* [[STACK_BEFORE_FIRST_ALLOCA]]) |
| 51 | +// CHECK: call void @llvm.stackrestore(ptr [[STACK_BEFORE_SECOND_ALLOCA]]) |
| 52 | +// CHECK: call void @llvm.stackrestore(ptr [[STACK_BEFORE_FIRST_ALLOCA]]) |
54 | 53 | // CHECK: br label %[[HEADER]]
|
55 | 54 | // CHECK: [[EXIT]]:
|
56 |
| -// CHECK: call void @llvm.stackrestore(i8* [[STACK_BEFORE_SECOND_ALLOCA]]) |
57 |
| -// CHECK: call void @llvm.stackrestore(i8* [[STACK_BEFORE_FIRST_ALLOCA]]) |
| 55 | +// CHECK: call void @llvm.stackrestore(ptr [[STACK_BEFORE_SECOND_ALLOCA]]) |
| 56 | +// CHECK: call void @llvm.stackrestore(ptr [[STACK_BEFORE_FIRST_ALLOCA]]) |
58 | 57 | // CHECK: ret void
|
59 | 58 | // CHECK: }
|
60 | 59 | sil @looper : $@convention(thin) <each T_1, each T_2> () -> () {
|
|
0 commit comments