Skip to content

Commit 57f2f51

Browse files
Merge pull request swiftlang#27697 from aschwaighofer/runtime_compat_version_dynamic_replacement_lib
Respect runtime-compatibility-version flag also for dynamic replacement compatibility library
2 parents f3ecb56 + 390eaab commit 57f2f51

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

lib/Frontend/CompilerInvocation.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1198,11 +1198,9 @@ static bool ParseIRGenArgs(IRGenOptions &Opts, ArgList &Args,
11981198
A->getAsString(Args), A->getValue());
11991199
}
12001200
}
1201-
1202-
// Autolink runtime compatibility libraries, if asked to.
1203-
if (!Args.hasArg(options::OPT_disable_autolinking_runtime_compatibility)) {
1201+
1202+
auto getRuntimeCompatVersion = [&] () -> Optional<llvm::VersionTuple> {
12041203
Optional<llvm::VersionTuple> runtimeCompatibilityVersion;
1205-
12061204
if (auto versionArg = Args.getLastArg(
12071205
options::OPT_runtime_compatibility_version)) {
12081206
auto version = StringRef(versionArg->getValue());
@@ -1218,15 +1216,18 @@ static bool ParseIRGenArgs(IRGenOptions &Opts, ArgList &Args,
12181216
runtimeCompatibilityVersion =
12191217
getSwiftRuntimeCompatibilityVersionForTarget(Triple);
12201218
}
1221-
1222-
Opts.AutolinkRuntimeCompatibilityLibraryVersion =
1223-
runtimeCompatibilityVersion;
1219+
return runtimeCompatibilityVersion;
1220+
};
1221+
1222+
// Autolink runtime compatibility libraries, if asked to.
1223+
if (!Args.hasArg(options::OPT_disable_autolinking_runtime_compatibility)) {
1224+
Opts.AutolinkRuntimeCompatibilityLibraryVersion = getRuntimeCompatVersion();
12241225
}
12251226

12261227
if (!Args.hasArg(options::
12271228
OPT_disable_autolinking_runtime_compatibility_dynamic_replacements)) {
12281229
Opts.AutolinkRuntimeCompatibilityDynamicReplacementLibraryVersion =
1229-
getSwiftRuntimeCompatibilityVersionForTarget(Triple);
1230+
getRuntimeCompatVersion();
12301231
}
12311232
return false;
12321233
}

test/IRGen/autolink-runtime-compatibility.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
// RUN: %target-swift-frontend -disable-autolinking-runtime-compatibility-dynamic-replacements -runtime-compatibility-version 5.0 -disable-autolinking-runtime-compatibility -emit-ir -parse-stdlib %s | %FileCheck -check-prefix=NO-FORCE-LOAD %s
66

77
// Doesn't autolink compatibility library because runtime compatibility library is disabled
8-
// RUN: %target-swift-frontend -disable-autolinking-runtime-compatibility-dynamic-replacements -runtime-compatibility-version none -emit-ir -parse-stdlib %s | %FileCheck -check-prefix=NO-FORCE-LOAD %s
8+
// RUN: %target-swift-frontend -runtime-compatibility-version none -emit-ir -parse-stdlib %s | %FileCheck -check-prefix=NO-FORCE-LOAD %s
99

1010
// Doesn't autolink compatibility library because target OS doesn't need it
11-
// RUN: %target-swift-frontend -disable-autolinking-runtime-compatibility-dynamic-replacements -target x86_64-apple-macosx10.24 -emit-ir -parse-stdlib %s | %FileCheck -check-prefix=NO-FORCE-LOAD %s
11+
// RUN: %target-swift-frontend -target x86_64-apple-macosx10.24 -emit-ir -parse-stdlib %s | %FileCheck -check-prefix=NO-FORCE-LOAD %s
1212

1313
// Autolinks because compatibility library was explicitly asked for
1414
// RUN: %target-swift-frontend -runtime-compatibility-version 5.0 -emit-ir -parse-stdlib %s | %FileCheck -check-prefix=FORCE-LOAD %s
@@ -18,8 +18,11 @@ public func foo() {}
1818

1919
// NO-FORCE-LOAD-NOT: FORCE_LOAD
2020
// NO-FORCE-LOAD-NOT: !{!"-lswiftCompatibility50"}
21+
// NO-FORCE-LOAD-NOT: !{!"-lswiftCompatibilityDynamicReplacements"}
2122

2223
// FORCE-LOAD: declare {{.*}} @"_swift_FORCE_LOAD_$_swiftCompatibility50"
24+
// FORCE-LOAD: declare {{.*}} @"_swift_FORCE_LOAD_$_swiftCompatibilityDynamicReplacements"
2325

2426
// FORCE-LOAD-DAG: [[AUTOLINK_SWIFT_COMPAT:![0-9]+]] = !{!"-lswiftCompatibility50"}
27+
// FORCE-LOAD-DAG: !{!"-lswiftCompatibilityDynamicReplacements"}
2528
// FORCE-LOAD-DAG: !llvm.linker.options = !{{{.*}}[[AUTOLINK_SWIFT_COMPAT]]{{[,}]}}

0 commit comments

Comments
 (0)