Skip to content

Commit 6699de7

Browse files
authored
Revert " Infer object format when it can't be determined from a triple's successfully parsed environment"
1 parent e1e6378 commit 6699de7

File tree

4 files changed

+51
-98
lines changed

4 files changed

+51
-98
lines changed

Sources/SwiftDriver/Utilities/Triple.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,6 @@ public struct Triple {
167167
if let parsedEnv = parsedEnv {
168168
self.environment = parsedEnv.value.environment
169169
self.objectFormat = parsedEnv.value.objectFormat
170-
?? ObjectFormat.infer(arch: parsedArch?.value.arch,
171-
os: parsedOS?.value)
172170
}
173171
else {
174172
self.environment = Environment.infer(archName: parsedArch?.substring)

Tests/SwiftDriverTests/ExplicitModuleBuildTests.swift

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -322,11 +322,6 @@ final class ExplicitModuleBuildTests: XCTestCase {
322322
case .relative(RelativePath("main")):
323323
XCTAssertTrue(driver.isExplicitMainModuleJob(job: job))
324324
XCTAssertEqual(job.kind, .link)
325-
326-
case .temporary(RelativePath("main.autolink")):
327-
XCTAssertTrue(driver.isExplicitMainModuleJob(job: job))
328-
XCTAssertEqual(job.kind, .autolinkExtract)
329-
330325
default:
331326
XCTFail("Unexpected module dependency build job output: \(job.outputs[0].file)")
332327
}

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 50 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ final class SwiftDriverTests: XCTestCase {
240240
// Test the combination of -c and -o includes the base output path.
241241
do {
242242
var driver = try Driver(args: ["swiftc", "-c", "foo.swift", "-o", "/some/output/path/bar.o"])
243-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
243+
let plannedJobs = try driver.planBuild()
244244
XCTAssertEqual(plannedJobs.count, 1)
245245
XCTAssertEqual(plannedJobs[0].kind, .compile)
246246
XCTAssertTrue(plannedJobs[0].commandLine.contains(.path(try VirtualPath(path: "/some/output/path/bar.o"))))
@@ -410,7 +410,7 @@ final class SwiftDriverTests: XCTestCase {
410410

411411
func testStandardCompileJobs() throws {
412412
var driver1 = try Driver(args: ["swiftc", "foo.swift", "bar.swift", "-module-name", "Test"])
413-
let plannedJobs = try driver1.planBuild().removingAutolinkExtractJobs()
413+
let plannedJobs = try driver1.planBuild()
414414
XCTAssertEqual(plannedJobs.count, 3)
415415
XCTAssertEqual(plannedJobs[0].outputs.count, 1)
416416
XCTAssertEqual(plannedJobs[0].outputs.first!.file, VirtualPath.temporary(RelativePath("foo.o")))
@@ -1129,7 +1129,7 @@ final class SwiftDriverTests: XCTestCase {
11291129
func testBatchModeCompiles() throws {
11301130
do {
11311131
var driver1 = try Driver(args: ["swiftc", "foo1.swift", "bar1.swift", "foo2.swift", "bar2.swift", "foo3.swift", "bar3.swift", "foo4.swift", "bar4.swift", "foo5.swift", "bar5.swift", "wibble.swift", "-module-name", "Test", "-enable-batch-mode", "-driver-batch-count", "3"])
1132-
let plannedJobs = try driver1.planBuild().removingAutolinkExtractJobs()
1132+
let plannedJobs = try driver1.planBuild()
11331133
XCTAssertEqual(plannedJobs.count, 4)
11341134
XCTAssertEqual(plannedJobs[0].outputs.count, 4)
11351135
XCTAssertEqual(plannedJobs[0].outputs.first!.file, VirtualPath.temporary(RelativePath("foo1.o")))
@@ -1145,7 +1145,7 @@ final class SwiftDriverTests: XCTestCase {
11451145
// Test 1 partition results in 1 job
11461146
do {
11471147
var driver = try Driver(args: ["swiftc", "-toolchain-stdlib-rpath", "-module-cache-path", "/tmp/clang-module-cache", "-swift-version", "4", "-Xfrontend", "-ignore-module-source-info", "-module-name", "batch", "-enable-batch-mode", "-j", "1", "-c", "main.swift", "lib.swift"])
1148-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
1148+
let plannedJobs = try driver.planBuild()
11491149
XCTAssertEqual(plannedJobs.count, 1)
11501150
var count = 0
11511151
for arg in plannedJobs[0].commandLine where arg == .flag("-primary-file") {
@@ -1176,7 +1176,7 @@ final class SwiftDriverTests: XCTestCase {
11761176
"swiftc", "-whole-module-optimization", "foo.swift", "bar.swift", "wibble.swift",
11771177
"-module-name", "Test", "-num-threads", "4"
11781178
])
1179-
let plannedJobs = try driver1.planBuild().removingAutolinkExtractJobs()
1179+
let plannedJobs = try driver1.planBuild()
11801180
XCTAssertEqual(plannedJobs.count, 2)
11811181
XCTAssertEqual(plannedJobs[0].kind, .compile)
11821182
XCTAssertEqual(plannedJobs[0].outputs.count, 3)
@@ -1191,7 +1191,7 @@ final class SwiftDriverTests: XCTestCase {
11911191
// emit-module
11921192
do {
11931193
var driver = try Driver(args: ["swiftc", "-module-name=ThisModule", "-wmo", "-num-threads", "4", "main.swift", "multi-threaded.swift", "-emit-module", "-o", "test.swiftmodule"])
1194-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
1194+
let plannedJobs = try driver.planBuild()
11951195
XCTAssertEqual(plannedJobs.count, 1)
11961196
XCTAssertEqual(plannedJobs[0].kind, .compile)
11971197
XCTAssertEqual(plannedJobs[0].inputs.count, 2)
@@ -1218,7 +1218,7 @@ final class SwiftDriverTests: XCTestCase {
12181218
"swiftc", "-whole-module-optimization", "foo.swift", "bar.swift", "wibble.swift", "-module-name", "Test",
12191219
"-num-threads", "4", "-output-file-map", file.path.pathString, "-emit-module-interface"
12201220
])
1221-
let plannedJobs = try driver1.planBuild().removingAutolinkExtractJobs()
1221+
let plannedJobs = try driver1.planBuild()
12221222
XCTAssertEqual(plannedJobs.count, 2)
12231223
XCTAssertEqual(plannedJobs[0].kind, .compile)
12241224
XCTAssertEqual(plannedJobs[0].outputs.count, 4)
@@ -1310,49 +1310,52 @@ final class SwiftDriverTests: XCTestCase {
13101310
}
13111311

13121312
func testModuleWrapJob() throws {
1313-
// FIXME: These tests will fail when run on macOS, because
1314-
// swift-autolink-extract is not present
1315-
#if os(Linux)
13161313
do {
13171314
var driver = try Driver(args: ["swiftc", "-target", "x86_64-unknown-linux-gnu", "-g", "foo.swift"])
13181315
let plannedJobs = try driver.planBuild()
1319-
XCTAssertEqual(plannedJobs.count, 5)
1320-
XCTAssertEqual(plannedJobs.map { $0.kind }, [.compile, .mergeModule, .autolinkExtract, .moduleWrap, .link])
1321-
XCTAssertEqual(plannedJobs[3].inputs.count, 1)
1322-
XCTAssertEqual(plannedJobs[3].inputs.count, 1)
1323-
XCTAssertTrue(plannedJobs[3].commandLine.contains(subsequence: ["-target", "x86_64-unknown-linux-gnu"]))
1324-
XCTAssertTrue(plannedJobs[1].outputs.contains(plannedJobs[3].inputs.first!))
1325-
XCTAssertTrue(plannedJobs[4].inputs.contains(plannedJobs[3].outputs.first!))
1316+
XCTAssertEqual(plannedJobs.count, 4)
1317+
// FIXME: There should also be an autolink-extract job. It looks like our
1318+
// triple parsing code is not detecting the object file format correctly.
1319+
XCTAssertEqual(plannedJobs.map { $0.kind }, [.compile, .mergeModule, .moduleWrap, .link])
1320+
XCTAssertEqual(plannedJobs[2].inputs.count, 1)
1321+
XCTAssertEqual(plannedJobs[2].inputs.count, 1)
1322+
XCTAssertTrue(plannedJobs[2].commandLine.contains(subsequence: ["-target", "x86_64-unknown-linux-gnu"]))
1323+
XCTAssertTrue(plannedJobs[1].outputs.contains(plannedJobs[2].inputs.first!))
1324+
XCTAssertTrue(plannedJobs[3].inputs.contains(plannedJobs[2].outputs.first!))
13261325
}
13271326

1327+
// dsymutil won't be found on other platforms
1328+
#if os(macOS)
1329+
do {
1330+
var driver = try Driver(args: ["swiftc", "-target", "x86_64-apple-macosx10.15", "-g", "foo.swift"])
1331+
let plannedJobs = try driver.planBuild()
1332+
XCTAssertEqual(plannedJobs.count, 4)
1333+
// No module wrapping with Mach-O.
1334+
// FIXME: There should also be an autolink-extract job. It looks like our
1335+
// triple parsing code is not detecting the object file format correctly.
1336+
XCTAssertEqual(plannedJobs.map { $0.kind }, [.compile, .mergeModule, .link, .generateDSYM])
1337+
}
1338+
#endif
1339+
13281340
do {
13291341
var driver = try Driver(args: ["swiftc", "-target", "x86_64-unknown-linux-gnu", "foo.swift"])
13301342
let plannedJobs = try driver.planBuild()
1331-
XCTAssertEqual(plannedJobs.count, 3)
1343+
XCTAssertEqual(plannedJobs.count, 2)
13321344
// No merge module/module wrap jobs.
1333-
XCTAssertEqual(plannedJobs.map { $0.kind }, [.compile, .autolinkExtract, .link])
1345+
// FIXME: There should also be an autolink-extract job. It looks like our
1346+
// triple parsing code is not detecting the object file format correctly.
1347+
XCTAssertEqual(plannedJobs.map { $0.kind }, [.compile, .link])
13341348
}
13351349

13361350
do {
13371351
var driver = try Driver(args: ["swiftc", "-target", "x86_64-unknown-linux-gnu", "-gdwarf-types", "foo.swift"])
13381352
let plannedJobs = try driver.planBuild()
1339-
XCTAssertEqual(plannedJobs.count, 4)
1353+
XCTAssertEqual(plannedJobs.count, 3)
13401354
// Merge module, but no module wrapping.
1341-
XCTAssertEqual(plannedJobs.map { $0.kind }, [.compile, .mergeModule, .autolinkExtract, .link])
1342-
}
1343-
#endif
1344-
// dsymutil won't be found on other platforms
1345-
#if os(macOS)
1346-
do {
1347-
var driver = try Driver(args: ["swiftc", "-target", "x86_64-apple-macosx10.15", "-g", "foo.swift"])
1348-
let plannedJobs = try driver.planBuild()
1349-
XCTAssertEqual(plannedJobs.count, 4)
1350-
// No module wrapping with Mach-O.
13511355
// FIXME: There should also be an autolink-extract job. It looks like our
13521356
// triple parsing code is not detecting the object file format correctly.
1353-
XCTAssertEqual(plannedJobs.map { $0.kind }, [.compile, .mergeModule, .link, .generateDSYM])
1357+
XCTAssertEqual(plannedJobs.map { $0.kind }, [.compile, .mergeModule, .link])
13541358
}
1355-
#endif
13561359
}
13571360

13581361
func testRepl() throws {
@@ -1614,7 +1617,7 @@ final class SwiftDriverTests: XCTestCase {
16141617
do {
16151618
// No dSYM generation (no -g)
16161619
var driver = try Driver(args: commonArgs)
1617-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
1620+
let plannedJobs = try driver.planBuild()
16181621

16191622
XCTAssertEqual(plannedJobs.count, 3)
16201623
XCTAssertFalse(plannedJobs.contains { $0.kind == .generateDSYM })
@@ -1623,7 +1626,7 @@ final class SwiftDriverTests: XCTestCase {
16231626
do {
16241627
// No dSYM generation (-gnone)
16251628
var driver = try Driver(args: commonArgs + ["-gnone"])
1626-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
1629+
let plannedJobs = try driver.planBuild()
16271630

16281631
XCTAssertEqual(plannedJobs.count, 3)
16291632
XCTAssertFalse(plannedJobs.contains { $0.kind == .generateDSYM })
@@ -1641,7 +1644,7 @@ final class SwiftDriverTests: XCTestCase {
16411644
XCTAssertEqual(plannedJobs.count, 5)
16421645
XCTAssertEqual(generateDSYMJob.outputs.last?.file, try VirtualPath(path: "Test.dSYM"))
16431646
} else {
1644-
XCTAssertEqual(plannedJobs.count, 6)
1647+
XCTAssertEqual(plannedJobs.count, 5)
16451648
XCTAssertFalse(plannedJobs.map { $0.kind }.contains(.generateDSYM))
16461649
}
16471650

@@ -1658,23 +1661,23 @@ final class SwiftDriverTests: XCTestCase {
16581661
// No dSYM generation (no -g), therefore no verification
16591662
try assertDriverDiagnostics(args: commonArgs) { driver, verifier in
16601663
verifier.expect(.warning("ignoring '-verify-debug-info'; no debug info is being generated"))
1661-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
1664+
let plannedJobs = try driver.planBuild()
16621665
XCTAssertEqual(plannedJobs.count, 3)
16631666
XCTAssertFalse(plannedJobs.contains { $0.kind == .verifyDebugInfo })
16641667
}
16651668

16661669
// No dSYM generation (-gnone), therefore no verification
16671670
try assertDriverDiagnostics(args: commonArgs + ["-gnone"]) { driver, verifier in
16681671
verifier.expect(.warning("ignoring '-verify-debug-info'; no debug info is being generated"))
1669-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
1672+
let plannedJobs = try driver.planBuild()
16701673
XCTAssertEqual(plannedJobs.count, 3)
16711674
XCTAssertFalse(plannedJobs.contains { $0.kind == .verifyDebugInfo })
16721675
}
16731676

16741677
do {
16751678
// dSYM generation and verification (-g + -verify-debug-info)
16761679
var driver = try Driver(args: commonArgs + ["-g"])
1677-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
1680+
let plannedJobs = try driver.planBuild()
16781681

16791682
let verifyDebugInfoJob = plannedJobs.last!
16801683
let cmd = verifyDebugInfoJob.commandLine
@@ -1704,36 +1707,6 @@ final class SwiftDriverTests: XCTestCase {
17041707
serializer.writeDOT(to: &output)
17051708

17061709
let dynamicLinker = driver.targetTriple.isDarwin ? "ld" : "clang"
1707-
#if os(Linux)
1708-
XCTAssertEqual(output,
1709-
"""
1710-
digraph Jobs {
1711-
"compile (swift-frontend)" [style=bold];
1712-
"test.swift" [fontsize=12];
1713-
"test.swift" -> "compile (swift-frontend)" [color=blue];
1714-
"test.o" [fontsize=12];
1715-
"compile (swift-frontend)" -> "test.o" [color=green];
1716-
"test.swiftmodule" [fontsize=12];
1717-
"compile (swift-frontend)" -> "test.swiftmodule" [color=green];
1718-
"test.swiftdoc" [fontsize=12];
1719-
"compile (swift-frontend)" -> "test.swiftdoc" [color=green];
1720-
"mergeModule (swift-frontend)" [style=bold];
1721-
"test.swiftmodule" -> "mergeModule (swift-frontend)" [color=blue];
1722-
"mergeModule (swift-frontend)" -> "test.swiftmodule" [color=green];
1723-
"mergeModule (swift-frontend)" -> "test.swiftdoc" [color=green];
1724-
"autolinkExtract (swift-autolink-extract)" [style=bold];
1725-
"test.o" -> "autolinkExtract (swift-autolink-extract)" [color=blue];
1726-
"test.autolink" [fontsize=12];
1727-
"autolinkExtract (swift-autolink-extract)" -> "test.autolink" [color=green];
1728-
"link (clang)" [style=bold];
1729-
"test.o" -> "link (clang)" [color=blue];
1730-
"test.autolink" -> "link (clang)" [color=blue];
1731-
"test" [fontsize=12];
1732-
"link (clang)" -> "test" [color=green];
1733-
}
1734-
1735-
""")
1736-
#else
17371710
XCTAssertEqual(output,
17381711
"""
17391712
digraph Jobs {
@@ -1757,7 +1730,6 @@ final class SwiftDriverTests: XCTestCase {
17571730
}
17581731
17591732
""")
1760-
#endif
17611733
}
17621734

17631735
func testRegressions() throws {
@@ -2036,7 +2008,7 @@ final class SwiftDriverTests: XCTestCase {
20362008

20372009
do {
20382010
var driver = try Driver(args: ["swiftc", "-c", "-embed-bitcode", "-import-objc-header", "TestInputHeader.h", "-pch-output-dir", "/pch", "foo.swift"])
2039-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
2011+
let plannedJobs = try driver.planBuild()
20402012
XCTAssertEqual(plannedJobs.count, 3)
20412013

20422014
XCTAssertEqual(plannedJobs[0].kind, .generatePCH)
@@ -2217,7 +2189,7 @@ final class SwiftDriverTests: XCTestCase {
22172189
func testEmbedBitcode() throws {
22182190
do {
22192191
var driver = try Driver(args: ["swiftc", "-embed-bitcode", "embed-bitcode.swift"])
2220-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
2192+
let plannedJobs = try driver.planBuild()
22212193
XCTAssertEqual(plannedJobs.count, 3)
22222194

22232195
XCTAssertEqual(plannedJobs[0].kind, .compile)
@@ -2239,7 +2211,7 @@ final class SwiftDriverTests: XCTestCase {
22392211

22402212
do {
22412213
var driver = try Driver(args: ["swiftc", "-embed-bitcode", "main.swift", "hi.swift"])
2242-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
2214+
let plannedJobs = try driver.planBuild()
22432215
XCTAssertEqual(plannedJobs.count, 5)
22442216

22452217
XCTAssertEqual(plannedJobs[0].kind, .compile)
@@ -2273,7 +2245,7 @@ final class SwiftDriverTests: XCTestCase {
22732245

22742246
do {
22752247
var driver = try Driver(args: ["swiftc", "-embed-bitcode", "-c", "-emit-module", "embed-bitcode.swift"])
2276-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
2248+
let plannedJobs = try driver.planBuild()
22772249
XCTAssertEqual(plannedJobs.count, 3)
22782250

22792251
XCTAssertEqual(plannedJobs[0].kind, .compile)
@@ -2302,7 +2274,7 @@ final class SwiftDriverTests: XCTestCase {
23022274

23032275
do {
23042276
var driver = try Driver(args: ["swiftc", "-embed-bitcode", "-wmo", "embed-bitcode.swift"])
2305-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
2277+
let plannedJobs = try driver.planBuild()
23062278
XCTAssertEqual(plannedJobs.count, 3)
23072279

23082280
XCTAssertEqual(plannedJobs[0].kind, .compile)
@@ -2324,7 +2296,7 @@ final class SwiftDriverTests: XCTestCase {
23242296

23252297
do {
23262298
var driver = try Driver(args: ["swiftc", "-embed-bitcode", "-c", "-parse-as-library", "-emit-module", "embed-bitcode.swift", "empty.swift", "-module-name", "ABC"])
2327-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
2299+
let plannedJobs = try driver.planBuild()
23282300
XCTAssertEqual(plannedJobs.count, 5)
23292301

23302302
XCTAssertEqual(plannedJobs[0].kind, .compile)
@@ -2359,7 +2331,7 @@ final class SwiftDriverTests: XCTestCase {
23592331

23602332
do {
23612333
var driver = try Driver(args: ["swiftc", "-embed-bitcode", "-c", "-parse-as-library", "-emit-module", "-whole-module-optimization", "embed-bitcode.swift", "-parse-stdlib", "-module-name", "Swift"])
2362-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
2334+
let plannedJobs = try driver.planBuild()
23632335
XCTAssertEqual(plannedJobs.count, 2)
23642336

23652337
XCTAssertEqual(plannedJobs[0].kind, .compile)
@@ -2541,7 +2513,7 @@ final class SwiftDriverTests: XCTestCase {
25412513
func testVFSOverlay() throws {
25422514
do {
25432515
var driver = try Driver(args: ["swiftc", "-c", "-vfsoverlay", "overlay.yaml", "foo.swift"])
2544-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
2516+
let plannedJobs = try driver.planBuild()
25452517
XCTAssertEqual(plannedJobs.count, 1)
25462518
XCTAssertEqual(plannedJobs[0].kind, .compile)
25472519
XCTAssert(plannedJobs[0].commandLine.contains(subsequence: [.flag("-vfsoverlay"), .path(.relative(RelativePath("overlay.yaml")))]))
@@ -2550,7 +2522,7 @@ final class SwiftDriverTests: XCTestCase {
25502522
// Verify that the overlays are passed to the frontend in the same order.
25512523
do {
25522524
var driver = try Driver(args: ["swiftc", "-c", "-vfsoverlay", "overlay1.yaml", "-vfsoverlay", "overlay2.yaml", "-vfsoverlay", "overlay3.yaml", "foo.swift"])
2553-
let plannedJobs = try driver.planBuild().removingAutolinkExtractJobs()
2525+
let plannedJobs = try driver.planBuild()
25542526
XCTAssertEqual(plannedJobs.count, 1)
25552527
XCTAssertEqual(plannedJobs[0].kind, .compile)
25562528
print(plannedJobs[0].commandLine)
@@ -2656,13 +2628,3 @@ fileprivate extension Array where Element: Equatable {
26562628
return false
26572629
}
26582630
}
2659-
2660-
fileprivate extension Array where Element == Job {
2661-
// Utility to drop autolink-extract jobs, which helps avoid introducing
2662-
// platform-specific conditionals in tests unrelated to autolinking.
2663-
func removingAutolinkExtractJobs() -> Self {
2664-
var filtered = self
2665-
filtered.removeAll(where: { $0.kind == .autolinkExtract })
2666-
return filtered
2667-
}
2668-
}

Tests/SwiftDriverTests/TripleTests.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1008,9 +1008,7 @@ final class TripleTests: XCTestCase {
10081008
}
10091009

10101010
func testFileFormat() {
1011-
XCTAssertEqual(.elf, Triple("i686-unknown-linux-gnu").objectFormat)
1012-
XCTAssertEqual(.elf, Triple("x86_64-unknown-linux-gnu").objectFormat)
1013-
XCTAssertEqual(.elf, Triple("x86_64-gnu-linux").objectFormat)
1011+
// XCTAssertEqual(.elf, Triple("i686-unknown-linux-gnu").objectFormat)
10141012
XCTAssertEqual(.elf, Triple("i686-unknown-freebsd").objectFormat)
10151013
XCTAssertEqual(.elf, Triple("i686-unknown-netbsd").objectFormat)
10161014
XCTAssertEqual(.elf, Triple("i686--win32-elf").objectFormat)

0 commit comments

Comments
 (0)