diff --git a/test/IRGen/big_types_tests.sil b/test/IRGen/big_types_tests.sil index ddf1b631a30..acd9a7161a7 100644 --- a/test/IRGen/big_types_tests.sil +++ b/test/IRGen/big_types_tests.sil @@ -21,7 +21,6 @@ public struct BigStruct { // CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @testDestroyValue(ptr noalias nocapture dereferenceable({{.*}}) #0 { // CHECK-NEXT: entry -// CHECK-NEXT: call ptr @"$s15big_types_tests9BigStructVWOs"(ptr %0) // CHECK-NEXT: ret void sil @testDestroyValue : $@convention(thin) (@owned BigStruct) -> () { entry(%x : $BigStruct): diff --git a/test/IRGen/moveonly_value_functions.swift b/test/IRGen/moveonly_value_functions.swift index 9e6f0a5b0aa..f14abc9f876 100644 --- a/test/IRGen/moveonly_value_functions.swift +++ b/test/IRGen/moveonly_value_functions.swift @@ -177,7 +177,7 @@ public func takeOuterDeinitingNC_1(_ t: consuming OuterDeinitingNC_1) { // CHECK-SAME: ptr{{.*}} %0, // CHECK-SAME: ptr %T) // CHECK-SAME: { -// CHECK: call{{.*}} @"$s24moveonly_value_functions9OuterNC_1VyxGlWOs"( +// CHECK: call{{.*}} @"$s24moveonly_value_functions9OuterNC_1VyxGlWOh"( // CHECK-SAME: ptr %0, // CHECK-SAME: ptr %T) // CHECK: } @@ -185,8 +185,8 @@ public func takeOuterDeinitingNC_1(_ t: consuming OuterDeinitingNC_1) { // Verify that the outlined release function takes the metadata for the // move-only-with-deinit type InnerDeinitingReleasableNC and passes it along // to that deinit. -// $s24moveonly_value_functions9OuterNC_1VyxGlWOs ---> outlined release of moveonly_value_functions.OuterNC_2 -// CHECK-LABEL: define{{.*}} @"$s24moveonly_value_functions9OuterNC_1VyxGlWOs"( +// $s24moveonly_value_functions9OuterNC_1VyxGlWOh ---> outlined destroy of moveonly_value_functions.OuterNC_2 +// CHECK-LABEL: define{{.*}} @"$s24moveonly_value_functions9OuterNC_1VyxGlWOh"( // CHECK-SAME: ptr %0, // CHECK-SAME: ptr %T) // CHECK-SAME: { @@ -298,24 +298,15 @@ public func takeOuterSinglePayloadNC_1(_ e: consuming OuterSinglePayloadNC_1< // : ptr noalias nocapture dereferenceable(64) %0, // CHECK-SAME: ptr %T) // CHECK-SAME: { -// CHECK: call{{.*}} @"$s24moveonly_value_functions22OuterSinglePayloadNC_2OyxGlWOs"( +// CHECK: call{{.*}} @"$s24moveonly_value_functions22OuterSinglePayloadNC_2OyxGlWOh"( // CHECK-SAME: ptr %0, // CHECK-SAME: ptr %T) // CHECK: } -// CHECK-LABEL: define{{.*}} @"$s24moveonly_value_functions22OuterSinglePayloadNC_2OyxGlWOs"( +// CHECK-LABEL: define{{.*}} @"$s24moveonly_value_functions22OuterSinglePayloadNC_2OyxGlWOh"( // CHECK-SAME: ptr %0, // CHECK-SAME: ptr %T) // CHECK-SAME: { -// CHECK: call{{.*}} @"$s24moveonly_value_functions22OuterSinglePayloadNC_2OyxGlWOe"( -// : i64 %2, -// : i64 %4, -// : i64 %6, -// : i64 %8, -// : i64 %10, -// : i64 %12, -// : i64 %14, -// : i64 %16, -// : ptr %T) +// CHECK: call{{.*}} @"$s24moveonly_value_functions26InnerDeinitingReleasableNCVfD"( // CHECK: } public func takeOuterSinglePayloadNC_2(_ e: consuming OuterSinglePayloadNC_2) {} @@ -400,23 +391,15 @@ public func takeOuterMultiPayloadNC_2(_ e: consuming OuterMultiPayloadNC_2 // : ptr noalias nocapture dereferenceable(64) %0, // CHECK-SAME: ptr %T) // CHECK-SAME: { -// CHECK: call{{.*}} @"$s24moveonly_value_functions21OuterMultiPayloadNC_3OyxGlWOs"( +// CHECK: call{{.*}} @"$s24moveonly_value_functions21OuterMultiPayloadNC_3OyxGlWOh"( // CHECK-SAME: ptr %0, // CHECK-SAME: ptr %T) // CHECK: } -// CHECK-LABEL: define{{.*}} @"$s24moveonly_value_functions21OuterMultiPayloadNC_3OyxGlWOs"( +// CHECK-LABEL: define{{.*}} @"$s24moveonly_value_functions21OuterMultiPayloadNC_3OyxGlWOh"( // CHECK-SAME: ptr %0, // CHECK-SAME: ptr %T) // CHECK-SAME: { // CHECK: call{{.*}} @"$s24moveonly_value_functions21OuterMultiPayloadNC_3OyxGlWOe"( -// : i64 %2, -// : i64 %4, -// : i64 %6, -// : i64 %8, -// : i64 %10, -// : i64 %12, -// : i64 %14, -// : i64 %16, // CHECK-SAME: ptr %T) // CHECK: } public func takeOuterMultiPayloadNC_3(_ e: consuming OuterMultiPayloadNC_3) {} diff --git a/test/IRGen/variadic_generic_outlining.sil b/test/IRGen/variadic_generic_outlining.sil index a5d66839e27..c184ad759f1 100644 --- a/test/IRGen/variadic_generic_outlining.sil +++ b/test/IRGen/variadic_generic_outlining.sil @@ -45,3 +45,31 @@ bb3: %ret = tuple () return %ret : $() } + +sil hidden @test_outlining_retain_release_addr : $@convention(thin) (@pack_guaranteed Pack{repeat Wrapper}) -> @pack_out Pack{repeat Wrapper} { +bb0(%0 : $*Pack{repeat Wrapper}, %1 : $*Pack{repeat Wrapper}): + %zero = integer_literal $Builtin.Word, 0 + %one = integer_literal $Builtin.Word, 1 + %len = pack_length $Pack{repeat each T} + br bb1(%zero : $Builtin.Word) + +bb1(%idx : $Builtin.Word): + %done = builtin "cmp_eq_Word"(%idx : $Builtin.Word, %len : $Builtin.Word) : $Builtin.Int1 // user: %10 + cond_br %done, bb3, bb2 + +bb2: + %pi = dynamic_pack_index %idx of $Pack{repeat Wrapper} + %opening = open_pack_element %pi of at , shape $T, uuid "31FF306C-BF88-11ED-A03F-ACDE48001123" + %in = pack_element_get %pi of %0 : $*Pack{repeat Wrapper} as $*Wrapper<@pack_element("31FF306C-BF88-11ED-A03F-ACDE48001123") T> + %out = pack_element_get %pi of %1 : $*Pack{repeat Wrapper} as $*Wrapper<@pack_element("31FF306C-BF88-11ED-A03F-ACDE48001123") T> + // Make sure that these don't crash. + retain_value_addr %in : $*Wrapper<@pack_element("31FF306C-BF88-11ED-A03F-ACDE48001123") T> + release_value_addr %in : $*Wrapper<@pack_element("31FF306C-BF88-11ED-A03F-ACDE48001123") T> + copy_addr %in to [init] %out : $*Wrapper<@pack_element("31FF306C-BF88-11ED-A03F-ACDE48001123") T> + %next = builtin "add_Word"(%idx : $Builtin.Word, %one : $Builtin.Word) : $Builtin.Word + br bb1(%next : $Builtin.Word) + +bb3: + %ret = tuple () + return %ret : $() +}