File tree 2 files changed +27
-3
lines changed
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 {
142
142
LLVMSetModuleIdentifier ( llvm, newValue, newValue. utf8. count)
143
143
}
144
144
}
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
+
146
166
/// Retrieves the inline assembly for this module, if any.
147
167
public var inlineAssembly : String {
148
168
get {
Original file line number Diff line number Diff line change @@ -22,10 +22,14 @@ class ModuleLinkSpec : XCTestCase {
22
22
// MODULE-LINK-NEXT: }
23
23
module1. dump ( )
24
24
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 "
27
27
let module2 = Module ( name: " ModuleLinkModuleTwo " )
28
28
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
+
29
33
let builder2 = IRBuilder ( module: module2)
30
34
// MODULE-LINK: define void @moduleTwo() {
31
35
let mod2f = builder2. addFunction ( " moduleTwo " ,
You can’t perform that action at this time.
0 commit comments