Skip to content

Commit 1430a1f

Browse files
authored
Merge pull request #578 from apple/revert-577-MergeWithSelf
Revert "[Merge Modules] Omit merge-modules job when only one input is given."
2 parents 8eab448 + 5d039ee commit 1430a1f

File tree

2 files changed

+10
-37
lines changed

2 files changed

+10
-37
lines changed

Sources/SwiftDriver/Jobs/Planning.swift

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -392,16 +392,6 @@ extension Driver {
392392
!(moduleInputs.isEmpty && moduleInputsFromJobOutputs.isEmpty),
393393
compilerMode.usesPrimaryFileInputs
394394
else { return nil }
395-
396-
// If there is only 1 module input to this job and its path matches that which we intend
397-
// to produce with this merge-modules job, skip it
398-
let mergeOutput = moduleOutputInfo.output!.outputPath
399-
if moduleInputs.count + moduleInputsFromJobOutputs.count == 1,
400-
let soleInput = moduleInputs.first == nil ? moduleInputsFromJobOutputs.first : moduleInputs.first,
401-
soleInput.fileHandle == mergeOutput {
402-
return nil
403-
}
404-
405395
return try mergeModuleJob(inputs: moduleInputs, inputsFromOutputs: moduleInputsFromJobOutputs)
406396
}
407397

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1973,23 +1973,6 @@ final class SwiftDriverTests: XCTestCase {
19731973
XCTAssertEqual(plannedJobs[1].inputs[0].file, .temporary(RelativePath("input.swiftmodule")))
19741974
XCTAssertEqual(plannedJobs[1].outputs[0].file, .absolute(AbsolutePath("/tmp/test.swiftmodule")))
19751975
}
1976-
1977-
do {
1978-
// -g is specified
1979-
// (partial and final product module are saved to temporary directory so merge-modules is omitted)
1980-
var driver = try Driver(args: ["swiftc", "-g", "input.swift"])
1981-
let plannedJobs = try driver.planBuild()
1982-
print(plannedJobs)
1983-
XCTAssertEqual(plannedJobs.count, 3)
1984-
// No .mergeModule job
1985-
#if os(macOS)
1986-
XCTAssertEqual(plannedJobs.map { $0.kind }, [.compile, .link, .generateDSYM])
1987-
#endif
1988-
#if os(Linux)
1989-
XCTAssertEqual(plannedJobs.map { $0.kind }, [.compile, .autolinkExtract, .link])
1990-
#endif
1991-
XCTAssertTrue(plannedJobs[0].outputs.contains(TypedVirtualPath(file: VirtualPath.temporary(RelativePath("input.swiftmodule")).intern(), type: .swiftModule)))
1992-
}
19931976
}
19941977

19951978
func testEmitModuleSeparately() throws {
@@ -2032,16 +2015,16 @@ final class SwiftDriverTests: XCTestCase {
20322015
// swift-autolink-extract is not present
20332016
#if os(Linux)
20342017
do {
2035-
var driver = try Driver(args: ["swiftc", "-target", "x86_64-unknown-linux-gnu", "-g", "foo.swift", "bar.swift"])
2018+
var driver = try Driver(args: ["swiftc", "-target", "x86_64-unknown-linux-gnu", "-g", "foo.swift"])
20362019
let plannedJobs = try driver.planBuild()
2037-
XCTAssertEqual(plannedJobs.count, 6)
2038-
XCTAssertEqual(Set(plannedJobs.map { $0.kind }), Set([.compile, .compile, .mergeModule, .autolinkExtract, .moduleWrap, .link]))
2020+
XCTAssertEqual(plannedJobs.count, 5)
2021+
XCTAssertEqual(Set(plannedJobs.map { $0.kind }), Set([.compile, .mergeModule, .autolinkExtract, .moduleWrap, .link]))
20392022
let wrapJob = plannedJobs.filter {$0.kind == .moduleWrap} .first!
20402023
XCTAssertEqual(wrapJob.inputs.count, 1)
20412024
XCTAssertTrue(wrapJob.commandLine.contains(subsequence: ["-target", "x86_64-unknown-linux-gnu"]))
20422025
let mergeJob = plannedJobs.filter {$0.kind == .mergeModule} .first!
20432026
XCTAssertTrue(mergeJob.outputs.contains(wrapJob.inputs.first!))
2044-
XCTAssertTrue(plannedJobs[5].inputs.contains(wrapJob.outputs.first!))
2027+
XCTAssertTrue(plannedJobs[4].inputs.contains(wrapJob.outputs.first!))
20452028
}
20462029

20472030
do {
@@ -2055,19 +2038,19 @@ final class SwiftDriverTests: XCTestCase {
20552038
do {
20562039
var driver = try Driver(args: ["swiftc", "-target", "x86_64-unknown-linux-gnu", "-gdwarf-types", "foo.swift"])
20572040
let plannedJobs = try driver.planBuild()
2058-
XCTAssertEqual(plannedJobs.count, 3)
2059-
// No merge module/module wrap jobs.
2060-
XCTAssertEqual(Set(plannedJobs.map { $0.kind }), Set([.compile, .autolinkExtract, .link]))
2041+
XCTAssertEqual(plannedJobs.count, 4)
2042+
// Merge module, but no module wrapping.
2043+
XCTAssertEqual(Set(plannedJobs.map { $0.kind }), Set([.compile, .mergeModule, .autolinkExtract, .link]))
20612044
}
20622045
#endif
20632046
// dsymutil won't be found on other platforms
20642047
#if os(macOS)
20652048
do {
2066-
var driver = try Driver(args: ["swiftc", "-target", "x86_64-apple-macosx10.15", "-g", "foo.swift", "bar.swift"])
2049+
var driver = try Driver(args: ["swiftc", "-target", "x86_64-apple-macosx10.15", "-g", "foo.swift"])
20672050
let plannedJobs = try driver.planBuild()
2068-
XCTAssertEqual(plannedJobs.count, 5)
2051+
XCTAssertEqual(plannedJobs.count, 4)
20692052
// No module wrapping with Mach-O.
2070-
XCTAssertEqual(plannedJobs.map { $0.kind }, [.compile, .compile, .mergeModule, .link, .generateDSYM])
2053+
XCTAssertEqual(plannedJobs.map { $0.kind }, [.compile, .mergeModule, .link, .generateDSYM])
20712054
}
20722055
#endif
20732056
}

0 commit comments

Comments
 (0)