1
1
#include " LLVMWrapper.h"
2
+ #include " llvm/ADT/ArrayRef.h"
2
3
#include " llvm/ProfileData/Coverage/CoverageMapping.h"
3
4
#include " llvm/ProfileData/Coverage/CoverageMappingWriter.h"
4
5
#include " llvm/ProfileData/InstrProf.h"
5
- #include " llvm/ADT/ArrayRef.h"
6
6
7
7
#include < iostream>
8
8
@@ -103,35 +103,30 @@ fromRust(LLVMRustCounterExprKind Kind) {
103
103
}
104
104
105
105
extern " C" void LLVMRustCoverageWriteFilenamesSectionToBuffer (
106
- const char *const Filenames[],
107
- size_t FilenamesLen,
108
- const size_t *const Lengths,
109
- size_t LengthsLen,
106
+ const char *const Filenames[], size_t FilenamesLen, // String start pointers
107
+ const size_t *const Lengths, size_t LengthsLen, // Corresponding lengths
110
108
RustStringRef BufferOut) {
111
109
if (FilenamesLen != LengthsLen) {
112
110
report_fatal_error (
113
111
" Mismatched lengths in LLVMRustCoverageWriteFilenamesSectionToBuffer" );
114
112
}
115
113
116
- SmallVector<std::string,32 > FilenameRefs;
114
+ SmallVector<std::string, 32 > FilenameRefs;
117
115
FilenameRefs.reserve (FilenamesLen);
118
116
for (size_t i = 0 ; i < FilenamesLen; i++) {
119
117
FilenameRefs.emplace_back (Filenames[i], Lengths[i]);
120
118
}
121
- auto FilenamesWriter =
122
- coverage::CoverageFilenamesSectionWriter ( ArrayRef<std::string>(FilenameRefs));
119
+ auto FilenamesWriter = coverage::CoverageFilenamesSectionWriter (
120
+ ArrayRef<std::string>(FilenameRefs));
123
121
auto OS = RawRustStringOstream (BufferOut);
124
122
FilenamesWriter.write (OS);
125
123
}
126
124
127
125
extern " C" void LLVMRustCoverageWriteMappingToBuffer (
128
- const unsigned *VirtualFileMappingIDs,
129
- unsigned NumVirtualFileMappingIDs,
130
- const LLVMRustCounterExpression *RustExpressions,
131
- unsigned NumExpressions,
126
+ const unsigned *VirtualFileMappingIDs, unsigned NumVirtualFileMappingIDs,
127
+ const LLVMRustCounterExpression *RustExpressions, unsigned NumExpressions,
132
128
const LLVMRustCounterMappingRegion *RustMappingRegions,
133
- unsigned NumMappingRegions,
134
- RustStringRef BufferOut) {
129
+ unsigned NumMappingRegions, RustStringRef BufferOut) {
135
130
// Convert from FFI representation to LLVM representation.
136
131
SmallVector<coverage::CounterMappingRegion, 0 > MappingRegions;
137
132
MappingRegions.reserve (NumMappingRegions);
@@ -142,7 +137,7 @@ extern "C" void LLVMRustCoverageWriteMappingToBuffer(
142
137
#if LLVM_VERSION_GE(18, 0) && LLVM_VERSION_LT(19, 0)
143
138
coverage::CounterMappingRegion::MCDCParameters{},
144
139
#endif
145
- Region.FileID , Region.ExpandedFileID ,
140
+ Region.FileID , Region.ExpandedFileID , // File IDs, then region info.
146
141
Region.LineStart , Region.ColumnStart , Region.LineEnd , Region.ColumnEnd ,
147
142
fromRust (Region.Kind ));
148
143
}
@@ -158,29 +153,25 @@ extern "C" void LLVMRustCoverageWriteMappingToBuffer(
158
153
159
154
auto CoverageMappingWriter = coverage::CoverageMappingWriter (
160
155
ArrayRef<unsigned >(VirtualFileMappingIDs, NumVirtualFileMappingIDs),
161
- Expressions,
162
- MappingRegions);
156
+ Expressions, MappingRegions);
163
157
auto OS = RawRustStringOstream (BufferOut);
164
158
CoverageMappingWriter.write (OS);
165
159
}
166
160
167
- extern " C" LLVMValueRef LLVMRustCoverageCreatePGOFuncNameVar (
168
- LLVMValueRef F,
169
- const char *FuncName,
170
- size_t FuncNameLen) {
161
+ extern " C" LLVMValueRef
162
+ LLVMRustCoverageCreatePGOFuncNameVar (LLVMValueRef F, const char *FuncName,
163
+ size_t FuncNameLen) {
171
164
auto FuncNameRef = StringRef (FuncName, FuncNameLen);
172
165
return wrap (createPGOFuncNameVar (*cast<Function>(unwrap (F)), FuncNameRef));
173
166
}
174
167
175
- extern " C" uint64_t LLVMRustCoverageHashByteArray (
176
- const char *Bytes,
177
- size_t NumBytes) {
168
+ extern " C" uint64_t LLVMRustCoverageHashByteArray (const char *Bytes,
169
+ size_t NumBytes) {
178
170
auto StrRef = StringRef (Bytes, NumBytes);
179
171
return IndexedInstrProf::ComputeHash (StrRef);
180
172
}
181
173
182
- static void WriteSectionNameToString (LLVMModuleRef M,
183
- InstrProfSectKind SK,
174
+ static void WriteSectionNameToString (LLVMModuleRef M, InstrProfSectKind SK,
184
175
RustStringRef Str) {
185
176
auto TargetTriple = Triple (unwrap (M)->getTargetTriple ());
186
177
auto name = getInstrProfSectionName (SK, TargetTriple.getObjectFormat ());
@@ -193,8 +184,9 @@ extern "C" void LLVMRustCoverageWriteMapSectionNameToString(LLVMModuleRef M,
193
184
WriteSectionNameToString (M, IPSK_covmap, Str);
194
185
}
195
186
196
- extern " C" void LLVMRustCoverageWriteFuncSectionNameToString (LLVMModuleRef M,
197
- RustStringRef Str) {
187
+ extern " C" void
188
+ LLVMRustCoverageWriteFuncSectionNameToString (LLVMModuleRef M,
189
+ RustStringRef Str) {
198
190
WriteSectionNameToString (M, IPSK_covfun, Str);
199
191
}
200
192
0 commit comments