Skip to content

Commit f05f0a8

Browse files
authored
Merge pull request #60230 from tshortli/enable-availability-checking-for-inlinable-code-in-apis-by-default
Frontend: Enable `-target-min-inlining-version min` for API modules by default
2 parents 15f7aa4 + 76bfd68 commit f05f0a8

File tree

2 files changed

+19
-14
lines changed

2 files changed

+19
-14
lines changed

lib/Frontend/CompilerInvocation.cpp

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,17 @@ swift::CompilerInvocation::CompilerInvocation() {
4747
setTargetTriple(llvm::sys::getDefaultTargetTriple());
4848
}
4949

50+
/// Converts a llvm::Triple to a llvm::VersionTuple.
51+
static llvm::VersionTuple
52+
getVersionTuple(const llvm::Triple &triple) {
53+
unsigned major, minor, patch;
54+
if (triple.isMacOSX())
55+
triple.getMacOSXVersion(major, minor, patch);
56+
else
57+
triple.getOSVersion(major, minor, patch);
58+
return llvm::VersionTuple(major, minor, patch);
59+
}
60+
5061
void CompilerInvocation::computeRuntimeResourcePathFromExecutablePath(
5162
StringRef mainExecutablePath, bool shared,
5263
llvm::SmallVectorImpl<char> &runtimeResourcePath) {
@@ -865,24 +876,19 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
865876
// First, set up default minimum inlining target versions.
866877
auto getDefaultMinimumInliningTargetVersion =
867878
[&](const llvm::Triple &triple) -> llvm::VersionTuple {
868-
// FIXME: Re-enable with rdar://91387029
869-
#if SWIFT_DEFAULT_API_TARGET_MIN_INLINING_VERSION_TO_MIN
879+
const auto targetVersion = getVersionTuple(triple);
880+
870881
// In API modules, default to the version when Swift first became available.
871-
if (Opts.LibraryLevel == LibraryLevel::API)
872-
if (auto minTriple = minimumAvailableOSVersionForTriple(triple))
873-
return *minTriple;
874-
#endif
882+
if (Opts.LibraryLevel == LibraryLevel::API) {
883+
if (auto minVersion = minimumAvailableOSVersionForTriple(triple))
884+
return *minVersion;
885+
}
875886

876887
// In other modules, assume that availability is used less consistently
877888
// and that library clients will generally raise deployment targets as the
878889
// library evolves so the min inlining version should be the deployment
879890
// target by default.
880-
unsigned major, minor, patch;
881-
if (triple.isMacOSX())
882-
triple.getMacOSXVersion(major, minor, patch);
883-
else
884-
triple.getOSVersion(major, minor, patch);
885-
return llvm::VersionTuple(major, minor, patch);
891+
return targetVersion;
886892
};
887893

888894
Opts.MinimumInliningTargetVersion =

test/attr/attr_inlinable_available.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@
1313
// RUN: %target-typecheck-verify-swift -swift-version 5 -enable-library-evolution -module-name Test -target %target-next-stable-abi-triple -target-min-inlining-version min
1414

1515

16-
// FIXME: Re-enable with rdar://91387029
1716
// Check that `-library-level api` implies `-target-min-inlining-version min`
18-
// RUN/: %target-typecheck-verify-swift -swift-version 5 -enable-library-evolution -module-name Test -target %target-next-stable-abi-triple -library-level api
17+
// RUN: %target-typecheck-verify-swift -swift-version 5 -enable-library-evolution -module-name Test -target %target-next-stable-abi-triple -library-level api
1918

2019

2120
// Check that these rules are only applied when requested and that at least some

0 commit comments

Comments
 (0)