@@ -62,11 +62,32 @@ fromRust(LLVMRustCounterMappingRegionKind Kind) {
62
62
report_fatal_error (" Bad LLVMRustCounterMappingRegionKind!" );
63
63
}
64
64
65
+ #if LLVM_VERSION_GE(18, 0)
66
+ // FFI equivalent of struct `llvm::coverage::CounterMappingRegion::MCDCParameters`
67
+ // https://github.com/llvm/llvm-project/blob/ac406b481794efbc66122495d0973ae91c1bb046/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h#L253
68
+ struct LLVMRustMCDCParameters {
69
+ uint32_t BitmapIdx;
70
+ uint32_t NumConditions;
71
+ uint32_t ID;
72
+ uint32_t TrueID;
73
+ uint32_t FalseID;
74
+ };
75
+
76
+ static coverage::CounterMappingRegion::MCDCParameters fromRust (
77
+ LLVMRustMCDCParameters Params) {
78
+ return {Params.BitmapIdx , Params.NumConditions , Params.ID , Params.TrueID ,
79
+ Params.FalseID };
80
+ }
81
+ #endif
82
+
65
83
// FFI equivalent of struct `llvm::coverage::CounterMappingRegion`
66
84
// https://github.com/rust-lang/llvm-project/blob/ea6fa9c2/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h#L211-L304
67
85
struct LLVMRustCounterMappingRegion {
68
86
LLVMRustCounter Count;
69
87
LLVMRustCounter FalseCount;
88
+ #if LLVM_VERSION_GE(18, 0)
89
+ LLVMRustMCDCParameters MCDCParams;
90
+ #endif
70
91
uint32_t FileID;
71
92
uint32_t ExpandedFileID;
72
93
uint32_t LineStart;
@@ -139,6 +160,9 @@ extern "C" void LLVMRustCoverageWriteMappingToBuffer(
139
160
RustMappingRegions, NumMappingRegions)) {
140
161
MappingRegions.emplace_back (
141
162
fromRust (Region.Count ), fromRust (Region.FalseCount ),
163
+ #if LLVM_VERSION_GE(18, 0)
164
+ fromRust (Region.MCDCParams ),
165
+ #endif
142
166
Region.FileID , Region.ExpandedFileID ,
143
167
Region.LineStart , Region.ColumnStart , Region.LineEnd , Region.ColumnEnd ,
144
168
fromRust (Region.Kind ));
0 commit comments