Skip to content

Commit 0e77477

Browse files
authored
Merge pull request #78553 from compnerd/well-known-imports
IRGen: further generalise runtime function generation
2 parents 5f0bd9b + ec70054 commit 0e77477

File tree

9 files changed

+340
-334
lines changed

9 files changed

+340
-334
lines changed

include/swift/Runtime/RuntimeFnWrappersGen.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ enum class RuntimeAvailability {
3939
/// given name, return types, argument types, attributes and
4040
/// a calling convention.
4141
llvm::Constant *getRuntimeFn(llvm::Module &Module, llvm::Constant *&cache,
42-
char const *name, llvm::CallingConv::ID cc,
42+
const char *ModuleName, char const *FunctionName,
43+
llvm::CallingConv::ID cc,
4344
RuntimeAvailability availability,
4445
llvm::ArrayRef<llvm::Type *> retTypes,
4546
llvm::ArrayRef<llvm::Type *> argTypes,

include/swift/Runtime/RuntimeFunctions.def

Lines changed: 281 additions & 281 deletions
Large diffs are not rendered by default.

lib/IRGen/IRGenModule.cpp

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1072,17 +1072,17 @@ llvm::FunctionType *swift::getRuntimeFnType(llvm::Module &Module,
10721072
}
10731073

10741074
llvm::Constant *swift::getRuntimeFn(
1075-
llvm::Module &Module, llvm::Constant *&cache, const char *name,
1076-
llvm::CallingConv::ID cc, RuntimeAvailability availability,
1077-
llvm::ArrayRef<llvm::Type *> retTypes,
1075+
llvm::Module &Module, llvm::Constant *&cache, const char *ModuleName,
1076+
const char *FunctionName, llvm::CallingConv::ID cc,
1077+
RuntimeAvailability availability, llvm::ArrayRef<llvm::Type *> retTypes,
10781078
llvm::ArrayRef<llvm::Type *> argTypes, ArrayRef<Attribute::AttrKind> attrs,
10791079
ArrayRef<llvm::MemoryEffects> memEffects, IRGenModule *IGM) {
10801080

10811081
if (cache)
10821082
return cache;
10831083

10841084
bool isWeakLinked = false;
1085-
std::string functionName(name);
1085+
std::string name(FunctionName);
10861086

10871087
switch (availability) {
10881088
case RuntimeAvailability::AlwaysAvailable:
@@ -1093,7 +1093,7 @@ llvm::Constant *swift::getRuntimeFn(
10931093
break;
10941094
}
10951095
case RuntimeAvailability::AvailableByCompatibilityLibrary: {
1096-
functionName.append("50");
1096+
name.append("50");
10971097
break;
10981098
}
10991099
}
@@ -1109,7 +1109,7 @@ llvm::Constant *swift::getRuntimeFn(
11091109
{argTypes.begin(), argTypes.end()},
11101110
/*isVararg*/ false);
11111111

1112-
auto addr = Module.getOrInsertFunction(functionName.c_str(), fnTy).getCallee();
1112+
auto addr = Module.getOrInsertFunction(name.c_str(), fnTy).getCallee();
11131113
auto fnptr = addr;
11141114
// Strip off any bitcast we might have due to this function being declared of
11151115
// a different type previously.
@@ -1126,12 +1126,20 @@ llvm::Constant *swift::getRuntimeFn(
11261126
(fn->getLinkage() == llvm::GlobalValue::ExternalLinkage &&
11271127
fn->isDeclaration());
11281128

1129-
if (!isStandardLibrary(Module) && IsExternal &&
1130-
::useDllStorage(llvm::Triple(Module.getTargetTriple())))
1131-
fn->setDLLStorageClass(llvm::GlobalValue::DLLImportStorageClass);
1129+
if (IGM && useDllStorage(IGM->Triple) && IsExternal) {
1130+
bool bIsImported = true;
1131+
if (IGM->getSwiftModule()->getPublicModuleName(true).str() == ModuleName)
1132+
bIsImported = false;
1133+
else if (ModuleDecl *MD = IGM->Context.getModuleByName(ModuleName))
1134+
bIsImported = !MD->isStaticLibrary();
11321135

1133-
if (IsExternal && isWeakLinked
1134-
&& !::useDllStorage(llvm::Triple(Module.getTargetTriple())))
1136+
if (bIsImported)
1137+
fn->setDLLStorageClass(llvm::GlobalValue::DLLImportStorageClass);
1138+
}
1139+
1140+
// Windows does not allow multiple definitions of weak symbols.
1141+
if (IsExternal && isWeakLinked &&
1142+
!llvm::Triple(Module.getTargetTriple()).isOSWindows())
11351143
fn->setLinkage(llvm::GlobalValue::ExternalWeakLinkage);
11361144

11371145
llvm::AttrBuilder buildFnAttr(Module.getContext());
@@ -1165,7 +1173,7 @@ llvm::Constant *swift::getRuntimeFn(
11651173
// This mismatch of attributes would be issue when lowering to WebAssembly.
11661174
// While lowering, LLVM counts how many dummy params are necessary to match
11671175
// callee and caller signature. So we need to add them correctly.
1168-
if (functionName == "swift_willThrow") {
1176+
if (name == "swift_willThrow") {
11691177
assert(IGM && "IGM is required for swift_willThrow.");
11701178
fn->addParamAttr(0, Attribute::AttrKind::SwiftSelf);
11711179
if (IGM->ShouldUseSwiftError) {
@@ -1201,10 +1209,10 @@ void IRGenModule::registerRuntimeEffect(ArrayRef<RuntimeEffect> effect,
12011209
#define QUOTE(...) __VA_ARGS__
12021210
#define STR(X) #X
12031211

1204-
#define FUNCTION(ID, NAME, CC, AVAILABILITY, RETURNS, ARGS, ATTRS, EFFECT, \
1205-
MEMEFFECTS) \
1206-
FUNCTION_IMPL(ID, NAME, CC, AVAILABILITY, QUOTE(RETURNS), QUOTE(ARGS), \
1207-
QUOTE(ATTRS), QUOTE(EFFECT), QUOTE(MEMEFFECTS))
1212+
#define FUNCTION(ID, MODULE, NAME, CC, AVAILABILITY, RETURNS, ARGS, ATTRS, \
1213+
EFFECT, MEMEFFECTS) \
1214+
FUNCTION_IMPL(ID, MODULE, NAME, CC, AVAILABILITY, QUOTE(RETURNS), \
1215+
QUOTE(ARGS), QUOTE(ATTRS), QUOTE(EFFECT), QUOTE(MEMEFFECTS))
12081216

12091217
#define RETURNS(...) { __VA_ARGS__ }
12101218
#define ARGS(...) { __VA_ARGS__ }
@@ -1217,12 +1225,12 @@ void IRGenModule::registerRuntimeEffect(ArrayRef<RuntimeEffect> effect,
12171225
#define MEMEFFECTS(...) \
12181226
{ __VA_ARGS__ }
12191227

1220-
#define FUNCTION_IMPL(ID, NAME, CC, AVAILABILITY, RETURNS, ARGS, ATTRS, \
1228+
#define FUNCTION_IMPL(ID, MODULE, NAME, CC, AVAILABILITY, RETURNS, ARGS, ATTRS,\
12211229
EFFECT, MEMEFFECTS) \
12221230
llvm::Constant *IRGenModule::get##ID##Fn() { \
12231231
using namespace RuntimeConstants; \
12241232
registerRuntimeEffect(EFFECT, #NAME); \
1225-
return getRuntimeFn(Module, ID##Fn, #NAME, CC, \
1233+
return getRuntimeFn(Module, ID##Fn, #MODULE, #NAME, CC, \
12261234
AVAILABILITY(this->Context), RETURNS, ARGS, ATTRS, \
12271235
MEMEFFECTS, this); \
12281236
} \
@@ -1289,7 +1297,8 @@ IRGenModule::createStringConstant(StringRef Str, bool willBeRelativelyAddressed,
12891297
if (NAME) \
12901298
return NAME; \
12911299
NAME = Module.getOrInsertGlobal(SYM, FullExistentialTypeMetadataStructTy); \
1292-
if (!getSwiftModule()->isStdlibModule()) \
1300+
if (!getSwiftModule()->isStdlibModule() || \
1301+
!getSwiftModule()->isStaticLibrary()) \
12931302
ApplyIRLinkage(IRLinkage::ExternalImport) \
12941303
.to(cast<llvm::GlobalVariable>(NAME)); \
12951304
return NAME; \

lib/LLVMPasses/ARCEntryPointBuilder.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ class ARCEntryPointBuilder {
221221

222222
llvm::Constant *cache = nullptr;
223223
Retain = getRuntimeFn(
224-
getModule(), cache,
224+
getModule(), cache, "Swift",
225225
isNonAtomic(OrigI) ? "swift_nonatomic_retain" : "swift_retain",
226226
DefaultCC, RuntimeAvailability::AlwaysAvailable, {ObjectPtrTy},
227227
{ObjectPtrTy}, {NoUnwind, FirstParamReturned}, {});
@@ -237,7 +237,7 @@ class ARCEntryPointBuilder {
237237
auto *VoidTy = Type::getVoidTy(getModule().getContext());
238238

239239
llvm::Constant *cache = nullptr;
240-
Release = getRuntimeFn(getModule(), cache,
240+
Release = getRuntimeFn(getModule(), cache, "Swift",
241241
isNonAtomic(OrigI) ? "swift_nonatomic_release"
242242
: "swift_release",
243243
DefaultCC, RuntimeAvailability::AlwaysAvailable,
@@ -274,7 +274,7 @@ class ARCEntryPointBuilder {
274274

275275
llvm::Constant *cache = nullptr;
276276
RetainN = getRuntimeFn(
277-
getModule(), cache,
277+
getModule(), cache, "Swift",
278278
isNonAtomic(OrigI) ? "swift_nonatomic_retain_n" : "swift_retain_n",
279279
DefaultCC, RuntimeAvailability::AlwaysAvailable, {ObjectPtrTy},
280280
{ObjectPtrTy, Int32Ty}, {NoUnwind, FirstParamReturned}, {});
@@ -291,7 +291,7 @@ class ARCEntryPointBuilder {
291291
auto *VoidTy = Type::getVoidTy(getModule().getContext());
292292

293293
llvm::Constant *cache = nullptr;
294-
ReleaseN = getRuntimeFn(getModule(), cache,
294+
ReleaseN = getRuntimeFn(getModule(), cache, "Swift",
295295
isNonAtomic(OrigI) ? "swift_nonatomic_release_n"
296296
: "swift_release_n",
297297
DefaultCC, RuntimeAvailability::AlwaysAvailable,
@@ -310,7 +310,7 @@ class ARCEntryPointBuilder {
310310

311311
llvm::Constant *cache = nullptr;
312312
UnknownObjectRetainN = getRuntimeFn(
313-
getModule(), cache,
313+
getModule(), cache, "Swift",
314314
isNonAtomic(OrigI) ? "swift_nonatomic_unknownObjectRetain_n"
315315
: "swift_unknownObjectRetain_n",
316316
DefaultCC, RuntimeAvailability::AlwaysAvailable, {ObjectPtrTy},
@@ -329,7 +329,7 @@ class ARCEntryPointBuilder {
329329

330330
llvm::Constant *cache = nullptr;
331331
UnknownObjectReleaseN = getRuntimeFn(
332-
getModule(), cache,
332+
getModule(), cache, "Swift",
333333
isNonAtomic(OrigI) ? "swift_nonatomic_unknownObjectRelease_n"
334334
: "swift_unknownObjectRelease_n",
335335
DefaultCC, RuntimeAvailability::AlwaysAvailable, {VoidTy},
@@ -347,7 +347,7 @@ class ARCEntryPointBuilder {
347347

348348
llvm::Constant *cache = nullptr;
349349
BridgeRetainN = getRuntimeFn(
350-
getModule(), cache,
350+
getModule(), cache, "Swift",
351351
isNonAtomic(OrigI) ? "swift_nonatomic_bridgeObjectRetain_n"
352352
: "swift_bridgeObjectRetain_n",
353353
DefaultCC, RuntimeAvailability::AlwaysAvailable, {BridgeObjectPtrTy},
@@ -366,7 +366,7 @@ class ARCEntryPointBuilder {
366366

367367
llvm::Constant *cache = nullptr;
368368
BridgeReleaseN = getRuntimeFn(
369-
getModule(), cache,
369+
getModule(), cache, "Swift",
370370
isNonAtomic(OrigI) ? "swift_nonatomic_bridgeObjectRelease_n"
371371
: "swift_bridgeObjectRelease_n",
372372
DefaultCC, RuntimeAvailability::AlwaysAvailable, {VoidTy},

lib/SILOptimizer/UtilityPasses/Link.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ class SILLinker : public SILModuleTransform {
4949

5050
void linkEmbeddedRuntimeFromStdlib() {
5151
using namespace RuntimeConstants;
52-
#define FUNCTION(ID, NAME, CC, AVAILABILITY, RETURNS, ARGS, ATTRS, EFFECT, \
53-
MEMORY_EFFECTS) \
52+
#define FUNCTION(ID, MODULE, NAME, CC, AVAILABILITY, RETURNS, ARGS, ATTRS, \
53+
EFFECT, MEMORY_EFFECTS) \
5454
linkEmbeddedRuntimeFunctionByName(#NAME, EFFECT); \
55-
if (getModule()->getASTContext().hadError()) \
55+
if (getModule()->getASTContext().hadError()) \
5656
return;
5757

5858
#define RETURNS(...)

lib/Sema/TypeCheckAttr.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2443,7 +2443,7 @@ static bool canDeclareSymbolName(StringRef symbol, ModuleDecl *fromModule) {
24432443
// promote this to an error after a while.
24442444

24452445
return llvm::StringSwitch<bool>(symbol)
2446-
#define FUNCTION(_, Name, ...) \
2446+
#define FUNCTION(_, Module, Name, ...) \
24472447
.Case(#Name, false) \
24482448
.Case("_" #Name, false) \
24492449
.Case(#Name "_", false) \

test/IRGen/dllexport.swift

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
1-
// RUN: %swift -target thumbv7--windows-itanium -emit-ir -parse-as-library -disable-legacy-type-info -parse-stdlib -module-name dllexport %s -o - | %FileCheck %s -check-prefix CHECK -check-prefix CHECK-NO-OPT
2-
// RUN: %swift -target thumbv7--windows-itanium -O -emit-ir -parse-as-library -disable-legacy-type-info -parse-stdlib -module-name dllexport %s -o - | %FileCheck %s -check-prefix CHECK -check-prefix CHECK-OPT
1+
// RUN: %swift -target %host_triple -emit-ir -parse-as-library -disable-legacy-type-info -module-name dllexport %s -o - | %FileCheck %s -check-prefix CHECK -check-prefix CHECK-NO-OPT
2+
// RUN: %swift -target %host_triple -O -emit-ir -parse-as-library -disable-legacy-type-info -module-name dllexport %s -o - | %FileCheck %s -check-prefix CHECK -check-prefix CHECK-OPT
33

4+
// REQUIRES: OS=windows-msvc
45

5-
// REQUIRES: CODEGENERATOR=ARM
6-
7-
enum Never {}
8-
9-
@_silgen_name("_swift_fatalError")
10-
func fatalError() -> Never
6+
import Swift
117

128
public protocol p {
139
func f()
@@ -25,24 +21,24 @@ open class d {
2521
}
2622
}
2723

28-
// CHECK-DAG: @"$s9dllexport2ciAA1cCvp" = dllexport global ptr null, align 4
24+
// CHECK-DAG: @"$s9dllexport2ciAA1cCvp" = dllexport global ptr null
2925
// CHECK-DAG: @"$s9dllexport1pMp" = dllexport constant
3026
// CHECK-DAG: @"$s9dllexport1cCMn" = dllexport constant
3127
// CHECK-DAG: @"$s9dllexport1cCN" = dllexport alias %swift.type
3228
// CHECK-DAG: @"$s9dllexport1dCN" = dllexport alias %swift.type
33-
// CHECK-DAG-OPT: @"$s9dllexport1dC1m33_C57BA610BA35E21738CC992438E660E9LLyyF" = dllexport alias void (), ptr @_swift_dead_method_stub
29+
// CHECK-DAG-OPT: @"$s9dllexport1dC1m33_C57BA610BA35E21738CC992438E660E9LLs5NeverOyf" = dllexport alias void (), ptr @_swift_dead_method_stub
3430
// CHECK-DAG-OPT: @"$s9dllexport1dCACycfc" = dllexport alias void (), ptr @_swift_dead_method_stub
3531
// CHECK-DAG-OPT: @"$s9dllexport1cCACycfc" = dllexport alias void (), ptr @_swift_dead_method_stub
3632
// CHECK-DAG-OPT: @"$s9dllexport1cCACycfC" = dllexport alias void (), ptr @_swift_dead_method_stub
3733
// CHECK-DAG: define dllexport swiftcc ptr @"$s9dllexport1cCfd"(ptr{{.*}})
3834
// CHECK-DAG-NO-OPT: define dllexport swiftcc ptr @"$s9dllexport1cCACycfc"(ptr %0)
3935
// CHECK-DAG-NO-OPT: define dllexport swiftcc ptr @"$s9dllexport1cCACycfC"(ptr %0)
4036
// CHECK-DAG: define dllexport swiftcc {{(noundef )?(nonnull )?}}ptr @"$s9dllexport2ciAA1cCvau"()
41-
// CHECK-DAG-NO-OPT: define dllexport swiftcc void @"$s9dllexport1dC1m33_C57BA610BA35E21738CC992438E660E9LLyyF"(ptr %0)
37+
// CHECK-DAG-NO-OPT: define dllexport swiftcc void @"$s9dllexport1dC1m33_C57BA610BA35E21738CC992438E660E9LLs5NeverOyF"(ptr %0)
4238
// CHECK-DAG-NO-OPT: define dllexport swiftcc void @"$s9dllexport1dCfD"(ptr %0)
4339
// CHECK-DAG: define dllexport swiftcc ptr @"$s9dllexport1dCfd"(ptr{{.*}})
44-
// CHECK-DAG: define dllexport swiftcc %swift.metadata_response @"$s9dllexport1cCMa"(i32 %0)
45-
// CHECK-DAG: define dllexport swiftcc %swift.metadata_response @"$s9dllexport1dCMa"(i32 %0)
40+
// CHECK-DAG: define dllexport swiftcc %swift.metadata_response @"$s9dllexport1cCMa"(i64 %0)
41+
// CHECK-DAG: define dllexport swiftcc %swift.metadata_response @"$s9dllexport1dCMa"(i64 %0)
4642
// CHECK-DAG-NO-OPT: define dllexport swiftcc ptr @"$s9dllexport1dCACycfc"(ptr %0)
4743
// CHECK-DAG-OPT: define dllexport swiftcc void @"$s9dllexport1dCfD"(ptr %0)
4844

test/IRGen/dllimport.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
// RUN: %swift -Xllvm -sil-disable-pass=GenericSpecializer -target thumbv7--windows-itanium -emit-ir -parse-as-library -disable-legacy-type-info -parse-stdlib -module-name dllimport %s -o - -enable-source-import -I %S | %FileCheck %s -check-prefix CHECK -check-prefix CHECK-NO-OPT
2-
// RUN: %swift -Xllvm -sil-disable-pass=GenericSpecializer -target thumbv7--windows-itanium -O -emit-ir -parse-as-library -disable-legacy-type-info -parse-stdlib -module-name dllimport -primary-file %s -o - -enable-source-import -I %S | %FileCheck %s -check-prefix CHECK -check-prefix CHECK-OPT
1+
// RUN: %swift -Xllvm -sil-disable-pass=GenericSpecializer -target %host_triple -emit-ir -parse-as-library -disable-legacy-type-info -module-name dllimport %s -o - -enable-source-import -I %S | %FileCheck %s -check-prefix CHECK -check-prefix CHECK-NO-OPT
2+
// RUN: %swift -Xllvm -sil-disable-pass=GenericSpecializer -target %host_triple -O -emit-ir -parse-as-library -disable-legacy-type-info -module-name dllimport -primary-file %s -o - -enable-source-import -I %S | %FileCheck %s -check-prefix CHECK -check-prefix CHECK-OPT
33

4-
// REQUIRES: CODEGENERATOR=ARM
4+
// REQUIRES: OS=windows-msvc
55

66
import dllexport
77

@@ -36,16 +36,16 @@ public func g() {
3636
blackhole({ () -> () in })
3737
}
3838

39-
// CHECK-NO-OPT-DAG: declare dllimport ptr @swift_allocObject(ptr, i32, i32)
39+
// CHECK-NO-OPT-DAG: declare dllimport ptr @swift_allocObject(ptr, i64, i64)
4040
// CHECK-NO-OPT-DAG: declare dllimport void @swift_release(ptr)
4141
// CHECK-NO-OPT-DAG: declare dllimport ptr @swift_retain(ptr returned)
4242
// CHECK-NO-OPT-DAG: @"$s9dllexport1pMp" = external dllimport global %swift.protocol
4343
// CHECK-NO-OPT-DAG: declare dllimport swiftcc ptr @"$s9dllexport2ciAA1cCvau"()
4444
// CHECK-NO-OPT-DAG: declare dllimport swiftcc ptr @"$s9dllexport1cCfd"(ptr swiftself)
45-
// CHECK-NO-OPT-DAG: declare dllimport void @swift_deallocClassInstance(ptr, i32, i32)
45+
// CHECK-NO-OPT-DAG: declare dllimport void @swift_deallocClassInstance(ptr, i64, i64)
4646

4747
// CHECK-OPT-DAG: declare dllimport ptr @swift_retain(ptr returned) local_unnamed_addr
4848
// CHECK-OPT-DAG: @"\01__imp_{{_?}}$s9dllexport1pMp" = external externally_initialized constant ptr
4949
// CHECK-OPT-DAG: declare dllimport swiftcc ptr @"$s9dllexport2ciAA1cCvau"()
50-
// CHECK-OPT-DAG: declare dllimport void @swift_deallocClassInstance(ptr, i32, i32)
50+
// CHECK-OPT-DAG: declare dllimport void @swift_deallocClassInstance(ptr, i64, i64)
5151
// CHECK-OPT-DAG: declare dllimport swiftcc ptr @"$s9dllexport1cCfd"(ptr swiftself)

test/IRGen/enum_value_semantics.sil

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
// RUN: %target-swift-frontend %s -disable-type-layout -disable-generic-metadata-prespecialization -gnone -emit-ir -enable-objc-interop | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize --check-prefix=CHECK-objc --check-prefix=CHECK-objc-simulator-%target-is-simulator --check-prefix=CHECK-objc-%target-ptrsize --check-prefix=CHECK-%target-os --check-prefix=CHECK-objc-%target-os
2-
// RUN: %target-swift-frontend %s -disable-type-layout -disable-generic-metadata-prespecialization -gnone -emit-ir -disable-objc-interop | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize --check-prefix=CHECK-native --check-prefix=CHECK-native-%target-ptrsize --check-prefix=CHECK-%target-os --check-prefix=CHECK-native-%target-os
1+
// RUN: %target-swift-frontend %s -Xllvm -type-lowering-disable-verification -disable-type-layout -disable-generic-metadata-prespecialization -gnone -emit-ir -enable-objc-interop | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize --check-prefix=CHECK-objc --check-prefix=CHECK-objc-simulator-%target-is-simulator --check-prefix=CHECK-objc-%target-ptrsize --check-prefix=CHECK-%target-os --check-prefix=CHECK-objc-%target-os
2+
// RUN: %target-swift-frontend %s -Xllvm -type-lowering-disable-verification -disable-type-layout -disable-generic-metadata-prespecialization -gnone -emit-ir -disable-objc-interop | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize --check-prefix=CHECK-native --check-prefix=CHECK-native-%target-ptrsize --check-prefix=CHECK-%target-os --check-prefix=CHECK-native-%target-os
33

44
// REQUIRES: CPU=x86_64
55

0 commit comments

Comments
 (0)