Skip to content

Commit 911ac56

Browse files
author
zhuyunxing
committed
coverage. Disable supporting mcdc on llvm-18
1 parent 3ae715c commit 911ac56

13 files changed

+38
-54
lines changed

compiler/rustc_codegen_llvm/src/builder.rs

+13
Original file line numberDiff line numberDiff line change
@@ -1683,6 +1683,11 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
16831683
) {
16841684
debug!("mcdc_parameters() with args ({:?}, {:?}, {:?})", fn_name, hash, bitmap_bytes);
16851685

1686+
assert!(
1687+
crate::llvm_util::get_version() >= (19, 0, 0),
1688+
"MCDC intrinsics require LLVM 19 or later"
1689+
);
1690+
16861691
let llfn = unsafe { llvm::LLVMRustGetInstrProfMCDCParametersIntrinsic(self.cx().llmod) };
16871692
let llty = self.cx.type_func(
16881693
&[self.cx.type_ptr(), self.cx.type_i64(), self.cx.type_i32()],
@@ -1716,6 +1721,10 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
17161721
"mcdc_tvbitmap_update() with args ({:?}, {:?}, {:?}, {:?}, {:?})",
17171722
fn_name, hash, bitmap_bytes, bitmap_index, mcdc_temp
17181723
);
1724+
assert!(
1725+
crate::llvm_util::get_version() >= (19, 0, 0),
1726+
"MCDC intrinsics require LLVM 19 or later"
1727+
);
17191728

17201729
let llfn =
17211730
unsafe { llvm::LLVMRustGetInstrProfMCDCTVBitmapUpdateIntrinsic(self.cx().llmod) };
@@ -1757,6 +1766,10 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
17571766
"mcdc_condbitmap_update() with args ({:?}, {:?}, {:?}, {:?}, {:?})",
17581767
fn_name, hash, cond_loc, mcdc_temp, bool_value
17591768
);
1769+
assert!(
1770+
crate::llvm_util::get_version() >= (19, 0, 0),
1771+
"MCDC intrinsics require LLVM 19 or later"
1772+
);
17601773
let llfn = unsafe { llvm::LLVMRustGetInstrProfMCDCCondBitmapIntrinsic(self.cx().llmod) };
17611774
let llty = self.cx.type_func(
17621775
&[

compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp

+9-36
Original file line numberDiff line numberDiff line change
@@ -88,38 +88,7 @@ struct LLVMRustMCDCParameters {
8888
LLVMRustMCDCBranchParameters BranchParameters;
8989
};
9090

91-
// LLVM representations for `MCDCParameters` evolved from LLVM 18 to 19.
92-
// Look at representations in 18
93-
// https://github.com/rust-lang/llvm-project/blob/66a2881a/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h#L253-L263
94-
// and representations in 19
95-
// https://github.com/llvm/llvm-project/blob/843cc474faefad1d639f4c44c1cf3ad7dbda76c8/llvm/include/llvm/ProfileData/Coverage/MCDCTypes.h
96-
#if LLVM_VERSION_LT(19, 0)
97-
static coverage::CounterMappingRegion::MCDCParameters
98-
fromRust(LLVMRustMCDCParameters Params) {
99-
auto parameter = coverage::CounterMappingRegion::MCDCParameters{};
100-
switch (Params.Tag) {
101-
case LLVMRustMCDCParametersTag::None:
102-
return parameter;
103-
case LLVMRustMCDCParametersTag::Decision:
104-
parameter.BitmapIdx =
105-
static_cast<unsigned>(Params.DecisionParameters.BitmapIdx),
106-
parameter.NumConditions =
107-
static_cast<unsigned>(Params.DecisionParameters.NumConditions);
108-
return parameter;
109-
case LLVMRustMCDCParametersTag::Branch:
110-
parameter.ID = static_cast<coverage::CounterMappingRegion::MCDCConditionID>(
111-
Params.BranchParameters.ConditionID),
112-
parameter.FalseID =
113-
static_cast<coverage::CounterMappingRegion::MCDCConditionID>(
114-
Params.BranchParameters.ConditionIDs[0]),
115-
parameter.TrueID =
116-
static_cast<coverage::CounterMappingRegion::MCDCConditionID>(
117-
Params.BranchParameters.ConditionIDs[1]);
118-
return parameter;
119-
}
120-
report_fatal_error("Bad LLVMRustMCDCParametersTag!");
121-
}
122-
#else
91+
#if LLVM_VERSION_GE(19, 0)
12392
static coverage::mcdc::Parameters fromRust(LLVMRustMCDCParameters Params) {
12493
switch (Params.Tag) {
12594
case LLVMRustMCDCParametersTag::None:
@@ -214,13 +183,17 @@ extern "C" void LLVMRustCoverageWriteMappingToBuffer(
214183
RustMappingRegions, NumMappingRegions)) {
215184
MappingRegions.emplace_back(
216185
fromRust(Region.Count), fromRust(Region.FalseCount),
217-
#if LLVM_VERSION_LT(19, 0)
218-
// LLVM 19 may move this argument to last.
219-
fromRust(Region.MCDCParameters),
186+
#if LLVM_VERSION_GE(18, 0) && LLVM_VERSION_LT(19, 0)
187+
coverage::CounterMappingRegion::MCDCParameters{},
220188
#endif
221189
Region.FileID, Region.ExpandedFileID, // File IDs, then region info.
222190
Region.LineStart, Region.ColumnStart, Region.LineEnd, Region.ColumnEnd,
223-
fromRust(Region.Kind));
191+
fromRust(Region.Kind)
192+
#if LLVM_VERSION_GE(19, 0)
193+
,
194+
fromRust(Region.MCDCParameters)
195+
#endif
196+
);
224197
}
225198

226199
std::vector<coverage::CounterExpression> Expressions;

compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp

+6-8
Original file line numberDiff line numberDiff line change
@@ -1539,23 +1539,21 @@ LLVMRustGetInstrProfIncrementIntrinsic(LLVMModuleRef M) {
15391539

15401540
extern "C" LLVMValueRef
15411541
LLVMRustGetInstrProfMCDCParametersIntrinsic(LLVMModuleRef M) {
1542+
#if LLVM_VERSION_GE(19, 0)
15421543
return wrap(llvm::Intrinsic::getDeclaration(
15431544
unwrap(M), llvm::Intrinsic::instrprof_mcdc_parameters));
1545+
#else
1546+
report_fatal_error("LLVM 19.0 is required for mcdc intrinsic functions");
1547+
#endif
15441548
}
15451549

15461550
extern "C" LLVMValueRef
15471551
LLVMRustGetInstrProfMCDCTVBitmapUpdateIntrinsic(LLVMModuleRef M) {
1552+
#if LLVM_VERSION_GE(19, 0)
15481553
return wrap(llvm::Intrinsic::getDeclaration(
15491554
unwrap(M), llvm::Intrinsic::instrprof_mcdc_tvbitmap_update));
1550-
}
1551-
1552-
extern "C" LLVMValueRef
1553-
LLVMRustGetInstrProfMCDCCondBitmapIntrinsic(LLVMModuleRef M) {
1554-
#if LLVM_VERSION_LT(19, 0)
1555-
return wrap(llvm::Intrinsic::getDeclaration(
1556-
unwrap(M), llvm::Intrinsic::instrprof_mcdc_condbitmap_update));
15571555
#else
1558-
report_fatal_error("LLVM 18.0 is required for mcdc intrinsic functions");
1556+
report_fatal_error("LLVM 19.0 is required for mcdc intrinsic functions");
15591557
#endif
15601558
}
15611559

tests/coverage/mcdc/condition-limit.coverage

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
LL| |#![feature(coverage_attribute)]
22
LL| |//@ edition: 2021
3-
LL| |//@ ignore-llvm-version: 19 - 99
3+
LL| |//@ min-llvm-version: 19
44
LL| |//@ compile-flags: -Zcoverage-options=mcdc
55
LL| |//@ llvm-cov-flags: --show-branches=count --show-mcdc
66
LL| |

tests/coverage/mcdc/condition-limit.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#![feature(coverage_attribute)]
22
//@ edition: 2021
3-
//@ ignore-llvm-version: 19 - 99
3+
//@ min-llvm-version: 19
44
//@ compile-flags: -Zcoverage-options=mcdc
55
//@ llvm-cov-flags: --show-branches=count --show-mcdc
66

tests/coverage/mcdc/if.coverage

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
LL| |#![feature(coverage_attribute)]
22
LL| |//@ edition: 2021
3-
LL| |//@ ignore-llvm-version: 19 - 99
3+
LL| |//@ min-llvm-version: 19
44
LL| |//@ compile-flags: -Zcoverage-options=mcdc
55
LL| |//@ llvm-cov-flags: --show-branches=count --show-mcdc
66
LL| |

tests/coverage/mcdc/if.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#![feature(coverage_attribute)]
22
//@ edition: 2021
3-
//@ ignore-llvm-version: 19 - 99
3+
//@ min-llvm-version: 19
44
//@ compile-flags: -Zcoverage-options=mcdc
55
//@ llvm-cov-flags: --show-branches=count --show-mcdc
66

tests/coverage/mcdc/inlined_expressions.coverage

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
LL| |#![feature(coverage_attribute)]
22
LL| |//@ edition: 2021
3-
LL| |//@ ignore-llvm-version: 19 - 99
3+
LL| |//@ min-llvm-version: 19
44
LL| |//@ compile-flags: -Zcoverage-options=mcdc -Copt-level=z -Cllvm-args=--inline-threshold=0
55
LL| |//@ llvm-cov-flags: --show-branches=count --show-mcdc
66
LL| |

tests/coverage/mcdc/inlined_expressions.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#![feature(coverage_attribute)]
22
//@ edition: 2021
3-
//@ ignore-llvm-version: 19 - 99
3+
//@ min-llvm-version: 19
44
//@ compile-flags: -Zcoverage-options=mcdc -Copt-level=z -Cllvm-args=--inline-threshold=0
55
//@ llvm-cov-flags: --show-branches=count --show-mcdc
66

tests/coverage/mcdc/nested_if.coverage

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
LL| |#![feature(coverage_attribute)]
22
LL| |//@ edition: 2021
3-
LL| |//@ ignore-llvm-version: 19 - 99
3+
LL| |//@ min-llvm-version: 19
44
LL| |//@ compile-flags: -Zcoverage-options=mcdc
55
LL| |//@ llvm-cov-flags: --show-branches=count --show-mcdc
66
LL| |

tests/coverage/mcdc/nested_if.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#![feature(coverage_attribute)]
22
//@ edition: 2021
3-
//@ ignore-llvm-version: 19 - 99
3+
//@ min-llvm-version: 19
44
//@ compile-flags: -Zcoverage-options=mcdc
55
//@ llvm-cov-flags: --show-branches=count --show-mcdc
66

tests/coverage/mcdc/non_control_flow.coverage

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
LL| |#![feature(coverage_attribute)]
22
LL| |//@ edition: 2021
3-
LL| |//@ ignore-llvm-version: 19 - 99
3+
LL| |//@ min-llvm-version: 19
44
LL| |//@ compile-flags: -Zcoverage-options=mcdc
55
LL| |//@ llvm-cov-flags: --show-branches=count --show-mcdc
66
LL| |

tests/coverage/mcdc/non_control_flow.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#![feature(coverage_attribute)]
22
//@ edition: 2021
3-
//@ ignore-llvm-version: 19 - 99
3+
//@ min-llvm-version: 19
44
//@ compile-flags: -Zcoverage-options=mcdc
55
//@ llvm-cov-flags: --show-branches=count --show-mcdc
66

0 commit comments

Comments
 (0)