Skip to content

Commit 6af4c7d

Browse files
Merge pull request #1706 from nate-chandler/bug/20241001/1
[Driver] Pass -emit-irgen thru to frontend.
2 parents 54c2156 + 6fa96f4 commit 6af4c7d

File tree

4 files changed

+43
-8
lines changed

4 files changed

+43
-8
lines changed

Sources/SwiftDriver/Driver/Driver.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2193,7 +2193,10 @@ extension Driver {
21932193
case .emitSibgen:
21942194
compilerOutputType = .raw_sib
21952195

2196-
case .emitIrgen, .emitIr:
2196+
case .emitIrgen:
2197+
compilerOutputType = .raw_llvmIr
2198+
2199+
case .emitIr:
21972200
compilerOutputType = .llvmIR
21982201

21992202
case .emitBc:

Sources/SwiftDriver/Jobs/CompileJob.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ extension Driver {
7575
/// Is this compile job top-level
7676
func isTopLevelOutput(type: FileType?) -> Bool {
7777
switch type {
78-
case .assembly, .sil, .raw_sil, .llvmIR, .ast, .jsonDependencies, .sib, .raw_sib,
79-
.importedModules, .indexData:
78+
case .assembly, .sil, .raw_sil, .raw_llvmIr, .llvmIR, .ast, .jsonDependencies, .sib,
79+
.raw_sib, .importedModules, .indexData:
8080
return true
8181
case .object:
8282
return (linkerOutputType == nil)
@@ -463,6 +463,8 @@ extension FileType {
463463
return .emitSibgen
464464
case .sib:
465465
return .emitSib
466+
case .raw_llvmIr:
467+
return .emitIrgen
466468
case .llvmIR:
467469
return .emitIr
468470
case .llvmBitcode:

Sources/SwiftDriver/Utilities/FileType.swift

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ public enum FileType: String, Hashable, CaseIterable, Codable {
7272
/// Raw sib file
7373
case raw_sib
7474

75+
/// Raw LLVM IR file
76+
case raw_llvmIr
77+
7578
/// LLVM IR file
7679
case llvmIR = "ll"
7780

@@ -188,6 +191,9 @@ extension FileType: CustomStringConvertible {
188191
case .raw_sib:
189192
return "raw-sib"
190193

194+
case .raw_llvmIr:
195+
return "raw-llvm-ir"
196+
191197
case .llvmIR:
192198
return "llvm-ir"
193199

@@ -285,7 +291,7 @@ extension FileType {
285291
.jsonDependencies, .clangModuleMap, .jsonTargetInfo, .jsonCompilerFeatures,
286292
.jsonSwiftArtifacts, .indexUnitOutputPath, .modDepCache, .jsonAPIBaseline,
287293
.jsonABIBaseline, .swiftConstValues, .jsonAPIDescriptor,
288-
.moduleSummary, .moduleSemanticInfo, .cachedDiagnostics:
294+
.moduleSummary, .moduleSemanticInfo, .cachedDiagnostics, .raw_llvmIr:
289295
return false
290296
}
291297
}
@@ -352,6 +358,8 @@ extension FileType {
352358
return "raw-sil"
353359
case .raw_sib:
354360
return "raw-sib"
361+
case .raw_llvmIr:
362+
return "raw-llvm-ir"
355363
case .llvmIR:
356364
return "llvm-ir"
357365
case .llvmBitcode:
@@ -412,7 +420,8 @@ extension FileType {
412420
.moduleTrace, .yamlOptimizationRecord, .swiftInterface, .privateSwiftInterface, .packageSwiftInterface,
413421
.jsonDependencies, .clangModuleMap, .jsonCompilerFeatures, .jsonTargetInfo,
414422
.jsonSwiftArtifacts, .jsonAPIBaseline, .jsonABIBaseline, .swiftConstValues,
415-
.jsonAPIDescriptor, .moduleSummary, .moduleSemanticInfo, .cachedDiagnostics:
423+
.jsonAPIDescriptor, .moduleSummary, .moduleSemanticInfo, .cachedDiagnostics,
424+
.raw_llvmIr:
416425
return true
417426
case .image, .object, .dSYM, .pch, .sib, .raw_sib, .swiftModule,
418427
.swiftDocumentation, .swiftSourceInfoFile, .llvmBitcode, .diagnostics,
@@ -436,7 +445,8 @@ extension FileType {
436445
.modDepCache, .bitstreamOptimizationRecord, .pcm, .pch, .jsonDependencies,
437446
.clangModuleMap, .jsonCompilerFeatures, .jsonTargetInfo, .jsonSwiftArtifacts,
438447
.indexUnitOutputPath, .jsonAPIBaseline, .jsonABIBaseline, .swiftConstValues,
439-
.jsonAPIDescriptor, .moduleSummary, .moduleSemanticInfo, .cachedDiagnostics:
448+
.jsonAPIDescriptor, .moduleSummary, .moduleSemanticInfo, .cachedDiagnostics,
449+
.raw_llvmIr:
440450
return false
441451
}
442452
}
@@ -446,7 +456,7 @@ extension FileType {
446456
switch self {
447457
case .swift, .ast, .indexData, .indexUnitOutputPath, .jsonCompilerFeatures, .jsonTargetInfo:
448458
return false
449-
case .sil, .sib, .image, .object, .dSYM, .dependencies, .autolink, .swiftModule, .swiftDocumentation, .swiftInterface, .privateSwiftInterface, .packageSwiftInterface, .swiftSourceInfoFile, .swiftConstValues, .assembly, .raw_sil, .raw_sib, .llvmIR, .llvmBitcode, .diagnostics, .emitModuleDiagnostics, .emitModuleDependencies, .objcHeader, .swiftDeps, .modDepCache, .remap, .importedModules, .tbd, .jsonDependencies, .jsonSwiftArtifacts, .moduleTrace, .yamlOptimizationRecord, .bitstreamOptimizationRecord, .pcm, .pch, .clangModuleMap, .jsonAPIBaseline, .jsonABIBaseline, .jsonAPIDescriptor, .moduleSummary, .moduleSemanticInfo, .cachedDiagnostics:
459+
case .sil, .sib, .image, .object, .dSYM, .dependencies, .autolink, .swiftModule, .swiftDocumentation, .swiftInterface, .privateSwiftInterface, .packageSwiftInterface, .swiftSourceInfoFile, .swiftConstValues, .assembly, .raw_sil, .raw_sib, .llvmIR, .llvmBitcode, .diagnostics, .emitModuleDiagnostics, .emitModuleDependencies, .objcHeader, .swiftDeps, .modDepCache, .remap, .importedModules, .tbd, .jsonDependencies, .jsonSwiftArtifacts, .moduleTrace, .yamlOptimizationRecord, .bitstreamOptimizationRecord, .pcm, .pch, .clangModuleMap, .jsonAPIBaseline, .jsonABIBaseline, .jsonAPIDescriptor, .moduleSummary, .moduleSemanticInfo, .cachedDiagnostics, .raw_llvmIr:
450460
return true
451461
}
452462
}
@@ -468,7 +478,7 @@ extension FileType {
468478
.moduleTrace, .indexData, .yamlOptimizationRecord,
469479
.bitstreamOptimizationRecord, .pcm, .pch, .jsonDependencies,
470480
.jsonAPIBaseline, .jsonABIBaseline, .swiftConstValues, .jsonAPIDescriptor,
471-
.moduleSummary, .moduleSemanticInfo, .cachedDiagnostics:
481+
.moduleSummary, .moduleSemanticInfo, .cachedDiagnostics, .raw_llvmIr:
472482
return true
473483
}
474484
}

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8166,6 +8166,26 @@ final class SwiftDriverTests: XCTestCase {
81668166
}
81678167
try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-emit-module", "-cache-compile-job", "-explicit-module-build")
81688168
}
8169+
8170+
func testEmitLLVMIR() throws {
8171+
do {
8172+
var driver = try Driver(args: ["swiftc", "-emit-irgen", "file.swift"])
8173+
let jobs = try driver.planBuild().removingAutolinkExtractJobs()
8174+
XCTAssertEqual(jobs.count, 1)
8175+
8176+
XCTAssertTrue(jobs[0].commandLine.contains("-emit-irgen"))
8177+
XCTAssertTrue(!jobs[0].commandLine.contains("-emit-ir"))
8178+
}
8179+
8180+
do {
8181+
var driver = try Driver(args: ["swiftc", "-emit-ir", "file.swift"])
8182+
let jobs = try driver.planBuild().removingAutolinkExtractJobs()
8183+
XCTAssertEqual(jobs.count, 1)
8184+
8185+
XCTAssertTrue(jobs[0].commandLine.contains("-emit-ir"))
8186+
XCTAssertTrue(!jobs[0].commandLine.contains("-emit-irgen"))
8187+
}
8188+
}
81698189
}
81708190

81718191
func assertString(

0 commit comments

Comments
 (0)