From 0bed319501a2b5d6109067de13ee71e352b510cf Mon Sep 17 00:00:00 2001 From: Alastair Houghton Date: Fri, 1 Mar 2024 15:36:59 +0000 Subject: [PATCH] [IRGen][Test] Update tests for non-Linux platform support. Tweak the tests slightly for WASM, Windows and Darwin. rdar://23335318 --- test/IRGen/autorelease.sil | 2 ++ ...cf_objc_retainAutoreleasedReturnValue.swift | 16 ++++++---------- ...f_objc_retainAutoreleasedReturnValue2.swift | 18 ++++++++++++++++++ 3 files changed, 26 insertions(+), 10 deletions(-) create mode 100644 test/IRGen/cf_objc_retainAutoreleasedReturnValue2.swift diff --git a/test/IRGen/autorelease.sil b/test/IRGen/autorelease.sil index dece04bf42341..86fc76ca3341d 100644 --- a/test/IRGen/autorelease.sil +++ b/test/IRGen/autorelease.sil @@ -1,5 +1,7 @@ // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %s -enable-objc-interop -emit-ir | %FileCheck -check-prefix CHECK -check-prefix CHECK-%target-ptrsize -check-prefix %target-cpu -DINT=i%target-ptrsize %s +// REQUIRE: objc_codegen + // rdar://16565958 import Builtin diff --git a/test/IRGen/cf_objc_retainAutoreleasedReturnValue.swift b/test/IRGen/cf_objc_retainAutoreleasedReturnValue.swift index 08db4c789f0c3..884025261880a 100644 --- a/test/IRGen/cf_objc_retainAutoreleasedReturnValue.swift +++ b/test/IRGen/cf_objc_retainAutoreleasedReturnValue.swift @@ -1,5 +1,9 @@ // RUN: %target-swift-frontend -module-name cf_objc_retainAutoreleasedReturnValue -I %S/Inputs %s -enable-objc-interop -emit-ir | %FileCheck %s -// RUN: %target-swift-frontend -module-name cf_objc_retainAutoreleasedReturnValue -I %S/Inputs %s -emit-ir | %FileCheck %s --check-prefix=NO_INTEROP + +// We need to require objc_codegen to avoid this test on WASM. +// (That's why the other half of this test is in a separate file.) + +// REQUIRES: objc_codegen import CFBridgedType @@ -10,15 +14,7 @@ public func foo() { // With interop enabled, this should use objc_retainAutoreleasedReturnValue() -// CHECK-LABEL: define protected swiftcc void @"$s37cf_objc_retainAutoreleasedReturnValue3fooyyF"() +// CHECK-LABEL: define {{.*}}swiftcc void @"$s37cf_objc_retainAutoreleasedReturnValue3fooyyF"() // CHECK: entry: // CHECK: %0 = call {{.*}}@returnsACFBridgedType() // CHECK: %1 = notail call ptr @llvm.objc.retainAutoreleasedReturnValue(ptr %0) - -// Without interop, it should call swift_retain() instead. - -// NO_INTEROP-LABEL: define protected swiftcc void @"$s37cf_objc_retainAutoreleasedReturnValue3fooyyF"() -// NO_INTEROP: entry: -// NO_INTEROP: %0 = call {{.*}}@returnsACFBridgedType() -// NO_INTEROP: %1 = call ptr @swift_retain(ptr returned %0) - diff --git a/test/IRGen/cf_objc_retainAutoreleasedReturnValue2.swift b/test/IRGen/cf_objc_retainAutoreleasedReturnValue2.swift new file mode 100644 index 0000000000000..463c608a450f6 --- /dev/null +++ b/test/IRGen/cf_objc_retainAutoreleasedReturnValue2.swift @@ -0,0 +1,18 @@ +// RUN: %target-swift-frontend -module-name cf_objc_retainAutoreleasedReturnValue -I %S/Inputs %s -disable-objc-interop -emit-ir | %FileCheck %s + +// This is in a separate file because *this* one works on WASM. +// (cf_objc_retainAutoreleasedReturnValue.swift does not.) + +import CFBridgedType + +@inline(never) +public func foo() { + let _ = returnsACFBridgedType() +} + +// With interop disabled, this should use swift_retain(). + +// CHECK-LABEL: define {{.*}}swiftcc void @"$s37cf_objc_retainAutoreleasedReturnValue3fooyyF"() +// CHECK: entry: +// CHECK: %0 = call {{.*}}@returnsACFBridgedType() +// CHECK: %1 = call ptr @swift_retain(ptr returned %0)