File tree Expand file tree Collapse file tree 1 file changed +19
-0
lines changed Expand file tree Collapse file tree 1 file changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -1423,6 +1423,25 @@ public struct UInt64Wrapper {
14231423//
14241424// The store inside the loop is deleted, and the load is hoisted such
14251425// that it now loads the UInt64Wrapper instead of Builtin.Int64
1426+ // CHECK-LABEL: sil @testTailProjection : $@convention(thin) () -> () {
1427+ // CHECK: bb0:
1428+ // CHECK: [[A:%.*]] = index_addr %4 : $*UInt64Wrapper, %1 : $Builtin.Word
1429+ // CHECK: store %{{.*}} to [[A]] : $*UInt64Wrapper
1430+ // CHECK: load %5 : $*UInt64Wrapper
1431+ // CHECK: br bb1
1432+ // CHECK: bb1(%{{.*}} : $Builtin.Int64, %{{.*}} : $UInt64Wrapper, [[PHI:%.*]] : $UInt64Wrapper):
1433+ // CHECK: cond_br undef, bb3, bb2
1434+ // CHECK: bb2:
1435+ // CHECK-NOT: (load|store)
1436+ // CHECK: struct_extract [[PHI]] : $UInt64Wrapper, #UInt64Wrapper.rawValue
1437+ // CHECK: struct_extract
1438+ // CHECK: struct $UInt64
1439+ // CHECK: struct $UInt64Wrapper
1440+ // CHECK-NOT: (load|store)
1441+ // CHECK: br bb1
1442+ // CHECK: bb3:
1443+ // CHECK: store [[PHI]] to [[A]] : $*UInt64Wrapper
1444+ // CHECK-LABEL: } // end sil function 'testTailProjection'
14261445sil @testTailProjection : $@convention(thin) () -> () {
14271446bb0:
14281447 %0 = integer_literal $Builtin.Int64, 0
You can’t perform that action at this time.
0 commit comments