File tree Expand file tree Collapse file tree 2 files changed +27
-3
lines changed Expand file tree Collapse file tree 2 files changed +27
-3
lines changed Original file line number Diff line number Diff 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 {
Original file line number Diff line number Diff 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 " ,
You can’t perform that action at this time.
0 commit comments