Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 544b231

Browse files
[Module] sourceFileName
Per #223
1 parent 5e746af commit 544b231

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

‎Sources/LLVM/Module.swift‎

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,27 @@ public final class Module: CustomStringConvertible {
142142
LLVMSetModuleIdentifier(llvm, newValue, newValue.utf8.count)
143143
}
144144
}
145-
145+
146+
/// The source filename of this module.
147+
///
148+
/// The source filename appears at the top of an IR module:
149+
///
150+
/// source_filename = "/path/to/source.c"
151+
///
152+
/// Local functions used in profile data prepend the source file name to the local function name.
153+
///
154+
/// If not otherwise set, `name` is used.
155+
public var sourceFileName: String {
156+
get {
157+
var count = 0
158+
guard let fn = LLVMGetSourceFileName(llvm, &count) else { return "" }
159+
return String(cString: fn)
160+
}
161+
set {
162+
LLVMSetSourceFileName(llvm, newValue, newValue.utf8.count)
163+
}
164+
}
165+
146166
/// Retrieves the inline assembly for this module, if any.
147167
public var inlineAssembly: String {
148168
get {

‎Tests/LLVMTests/ModuleLinkSpec.swift‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,14 @@ class ModuleLinkSpec : XCTestCase {
2222
// MODULE-LINK-NEXT: }
2323
module1.dump()
2424

25-
// MODULE-LINK: ; ModuleID = '[[ModuleName2:ModuleLinkModuleTwo]]'
26-
// MODULE-LINK-NEXT: source_filename = "[[ModuleName2]]"
25+
// MODULE-LINK: ; ModuleID = 'ModuleLinkModuleTwo'
26+
// MODULE-LINK-NEXT: source_filename = "/Users/user/Developer/Project/file.ext"
2727
let module2 = Module(name: "ModuleLinkModuleTwo")
2828
XCTAssertEqual(module2.name, "ModuleLinkModuleTwo")
29+
XCTAssertEqual(module2.sourceFileName, "ModuleLinkModuleTwo")
30+
module2.sourceFileName = "/Users/user/Developer/Project/file.ext"
31+
XCTAssertEqual(module2.sourceFileName, "/Users/user/Developer/Project/file.ext")
32+
2933
let builder2 = IRBuilder(module: module2)
3034
// MODULE-LINK: define void @moduleTwo() {
3135
let mod2f = builder2.addFunction("moduleTwo",

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /