Skip to content

Commit 8cff778

Browse files
authored
Merge pull request #21436 from jrose-apple/revert-5.0-right-on-target
[5.0] Revert "[Serialization] Use full target architectures for swiftmodule files"
2 parents 0070243 + 530d805 commit 8cff778

File tree

4 files changed

+31
-87
lines changed

4 files changed

+31
-87
lines changed

lib/Serialization/SerializedModuleLoader.cpp

Lines changed: 14 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -128,23 +128,6 @@ static void addDiagnosticInfoForArchitectureMismatch(ASTContext &ctx,
128128
archName, foundArchs);
129129
}
130130

131-
static std::pair<llvm::SmallString<16>, llvm::SmallString<16>>
132-
getArchSpecificModuleFileNames(StringRef archName) {
133-
llvm::SmallString<16> archFile, archDocFile;
134-
135-
if (!archName.empty()) {
136-
archFile += archName;
137-
archFile += '.';
138-
archFile += file_types::getExtension(file_types::TY_SwiftModuleFile);
139-
140-
archDocFile += archName;
141-
archDocFile += '.';
142-
archDocFile += file_types::getExtension(file_types::TY_SwiftModuleDocFile);
143-
}
144-
145-
return {archFile, archDocFile};
146-
}
147-
148131
bool
149132
SerializedModuleLoaderBase::findModule(AccessPathElem moduleID,
150133
std::unique_ptr<llvm::MemoryBuffer> *moduleBuffer,
@@ -160,19 +143,19 @@ SerializedModuleLoaderBase::findModule(AccessPathElem moduleID,
160143
moduleDocFilename +=
161144
file_types::getExtension(file_types::TY_SwiftModuleDocFile);
162145

163-
StringRef archName = Ctx.LangOpts.Target.getArchName();
164-
auto archFileNames = getArchSpecificModuleFileNames(archName);
146+
// FIXME: Which name should we be using here? Do we care about CPU subtypes?
147+
// FIXME: At the very least, don't hardcode "arch".
148+
llvm::SmallString<16> archName{
149+
Ctx.LangOpts.getPlatformConditionValue(PlatformConditionKind::Arch)};
150+
llvm::SmallString<16> archFile{archName};
151+
llvm::SmallString<16> archDocFile{archName};
152+
if (!archFile.empty()) {
153+
archFile += '.';
154+
archFile += file_types::getExtension(file_types::TY_SwiftModuleFile);
165155

166-
// FIXME: We used to use "major architecture" names for these files---the
167-
// names checked in "#if arch(...)". Fall back to that name in the one case
168-
// where it's different from what Swift 4.2 supported: 32-bit ARM platforms.
169-
// We should be able to drop this once there's an Xcode that supports the
170-
// new names.
171-
StringRef alternateArchName;
172-
if (Ctx.LangOpts.Target.getArch() == llvm::Triple::ArchType::arm)
173-
alternateArchName = "arm";
174-
auto alternateArchFileNames =
175-
getArchSpecificModuleFileNames(alternateArchName);
156+
archDocFile += '.';
157+
archDocFile += file_types::getExtension(file_types::TY_SwiftModuleDocFile);
158+
}
176159

177160
llvm::SmallString<128> scratch;
178161
llvm::SmallString<128> currPath;
@@ -186,19 +169,10 @@ SerializedModuleLoaderBase::findModule(AccessPathElem moduleID,
186169
currPath = path;
187170
llvm::sys::path::append(currPath, moduleFilename.str());
188171
err = openModuleFiles(currPath,
189-
archFileNames.first, archFileNames.second,
172+
archFile.str(), archDocFile.str(),
190173
moduleBuffer, moduleDocBuffer,
191174
scratch);
192175

193-
if (err == std::errc::no_such_file_or_directory &&
194-
!alternateArchName.empty()) {
195-
err = openModuleFiles(currPath,
196-
alternateArchFileNames.first,
197-
alternateArchFileNames.second,
198-
moduleBuffer, moduleDocBuffer,
199-
scratch);
200-
}
201-
202176
if (err == std::errc::no_such_file_or_directory) {
203177
addDiagnosticInfoForArchitectureMismatch(
204178
Ctx, moduleID.second, moduleName, archName, currPath);
@@ -223,18 +197,9 @@ SerializedModuleLoaderBase::findModule(AccessPathElem moduleID,
223197
}
224198

225199
llvm::sys::path::append(currPath, "Modules", moduleFilename.str());
226-
auto err = openModuleFiles(currPath,
227-
archFileNames.first, archFileNames.second,
200+
auto err = openModuleFiles(currPath, archFile.str(), archDocFile.str(),
228201
moduleBuffer, moduleDocBuffer, scratch);
229202

230-
if (err == std::errc::no_such_file_or_directory &&
231-
!alternateArchName.empty()) {
232-
err = openModuleFiles(currPath,
233-
alternateArchFileNames.first,
234-
alternateArchFileNames.second,
235-
moduleBuffer, moduleDocBuffer, scratch);
236-
}
237-
238203
if (err == std::errc::no_such_file_or_directory) {
239204
addDiagnosticInfoForArchitectureMismatch(
240205
Ctx, moduleID.second, moduleName, archName, currPath);

test/Serialization/load-arch-fallback-framework.swift

Lines changed: 0 additions & 18 deletions
This file was deleted.

test/Serialization/load-arch-fallback.swift

Lines changed: 0 additions & 18 deletions
This file was deleted.

test/lit.cfg

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,8 @@ elif platform.system() == 'Linux':
569569
if 'swift_interpreter' in config.available_features:
570570
config.available_features.add('swift-remoteast-test')
571571

572+
config.target_swiftmodule_name = "unknown.swiftmodule"
573+
config.target_swiftdoc_name = "unknown.swiftdoc"
572574
config.target_runtime = "unknown"
573575

574576
swift_reflection_test_name = 'swift-reflection-test' + config.variant_suffix
@@ -607,6 +609,8 @@ def use_interpreter_for_simple_runs():
607609

608610
if run_vendor == 'apple':
609611
config.available_features.add('objc_interop')
612+
config.target_swiftmodule_name = run_cpu + ".swiftmodule"
613+
config.target_swiftdoc_name = run_cpu + ".swiftdoc"
610614
config.target_object_format = "macho"
611615
config.target_dylib_extension = "dylib"
612616
config.target_codesign = "codesign -f -s -"
@@ -642,6 +646,15 @@ if run_vendor == 'apple':
642646
lit_config.note('Testing watchOS ' + config.variant_triple)
643647
xcrun_sdk_name = "watchos"
644648

649+
if run_cpu == "armv7" or run_cpu == "armv7s" or run_cpu == "armv7k":
650+
config.target_swiftmodule_name = "arm.swiftmodule"
651+
config.target_swiftdoc_name = "arm.swiftdoc"
652+
elif run_cpu == "arm64":
653+
config.target_swiftmodule_name = "arm64.swiftmodule"
654+
config.target_swiftdoc_name = "arm64.swiftdoc"
655+
else:
656+
lit_config.fatal("Unknown CPU '%s'" % run_cpu)
657+
645658
config.target_cc_options = (
646659
"-arch %s -m%s-version-min=%s %s" %
647660
(run_cpu, run_os, run_vers, clang_mcp_opt))
@@ -796,6 +809,8 @@ elif run_os in ['linux-gnu', 'linux-gnueabihf', 'freebsd', 'windows-cygnus', 'wi
796809
config.target_object_format = "elf"
797810
config.target_dylib_extension = "so"
798811
config.target_sdk_name = "linux"
812+
config.target_swiftmodule_name = run_cpu + ".swiftmodule"
813+
config.target_swiftdoc_name = run_cpu + ".swiftdoc"
799814
config.target_runtime = "native"
800815
config.target_swift_autolink_extract = inferSwiftBinary("swift-autolink-extract")
801816
config.target_build_swift = (
@@ -1255,8 +1270,8 @@ else:
12551270
config.substitutions.insert(0, ('%platform-module-dir', platform_module_dir))
12561271
config.substitutions.insert(0, ('%platform-sdk-overlay-dir', platform_sdk_overlay_dir))
12571272

1258-
config.substitutions.append(('%target-swiftmodule-name', run_cpu + '.swiftmodule'))
1259-
config.substitutions.append(('%target-swiftdoc-name', run_cpu + '.swiftdoc'))
1273+
config.substitutions.append(('%target-swiftmodule-name', config.target_swiftmodule_name))
1274+
config.substitutions.append(('%target-swiftdoc-name', config.target_swiftdoc_name))
12601275

12611276
config.substitutions.append(('%target-object-format', config.target_object_format))
12621277
config.substitutions.append(('%target-dylib-extension', config.target_dylib_extension))

0 commit comments

Comments
 (0)