Skip to content

Commit 3024f22

Browse files
author
zhuyunxing
committed
coverage. Flatten ffi for MCDCParameter
1 parent 391ad51 commit 3024f22

File tree

3 files changed

+30
-34
lines changed

3 files changed

+30
-34
lines changed

compiler/rustc_codegen_llvm/src/coverageinfo/ffi.rs

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,12 @@ pub mod mcdc {
132132
condition_ids: [LLVMConditionId; 2],
133133
}
134134

135-
#[repr(C, u8)]
135+
#[repr(C)]
136+
#[derive(Clone, Copy, Debug)]
136137
pub enum ParameterTag {
137-
None,
138-
Decision,
139-
Branch,
138+
None = 0,
139+
Decision = 1,
140+
Branch = 2,
140141
}
141142
/// Same layout with `LLVMRustMCDCParameters`
142143
#[repr(C)]
@@ -159,13 +160,7 @@ pub mod mcdc {
159160
Self { tag: ParameterTag::Decision, decision_params, branch_params: Default::default() }
160161
}
161162
pub fn branch(branch_params: BranchParameters) -> Self {
162-
Self { tag: ParameterTag::Branch, decision_params: Default, branch_params }
163-
}
164-
}
165-
166-
impl Default for Parameters {
167-
fn default() -> Self {
168-
Self::none()
163+
Self { tag: ParameterTag::Branch, decision_params: Default::default(), branch_params }
169164
}
170165
}
171166

@@ -294,7 +289,7 @@ impl CounterMappingRegion {
294289
Self {
295290
counter,
296291
false_counter: Counter::ZERO,
297-
mcdc_params: mcdc::Parameters::None,
292+
mcdc_params: mcdc::Parameters::none(),
298293
file_id,
299294
expanded_file_id: 0,
300295
start_line,
@@ -317,7 +312,7 @@ impl CounterMappingRegion {
317312
) -> Self {
318313
let (kind, mcdc_params) = match condition_info {
319314
Some(info) => (RegionKind::MCDCBranchRegion, mcdc::Parameters::branch(info.into())),
320-
None => (RegionKind::BranchRegion, Default::default()),
315+
None => (RegionKind::BranchRegion, mcdc::Parameters::none()),
321316
};
322317
Self {
323318
counter,
@@ -341,7 +336,7 @@ impl CounterMappingRegion {
341336
end_line: u32,
342337
end_col: u32,
343338
) -> Self {
344-
let mcdc_params = mcdc::Parameters::Decision(decision_info.into());
339+
let mcdc_params = mcdc::Parameters::decision(decision_info.into());
345340

346341
Self {
347342
counter: Counter::ZERO,
@@ -371,7 +366,7 @@ impl CounterMappingRegion {
371366
Self {
372367
counter: Counter::ZERO,
373368
false_counter: Counter::ZERO,
374-
mcdc_params: mcdc::Parameters::None,
369+
mcdc_params: mcdc::Parameters::none(),
375370
file_id,
376371
expanded_file_id,
377372
start_line,
@@ -395,7 +390,7 @@ impl CounterMappingRegion {
395390
Self {
396391
counter: Counter::ZERO,
397392
false_counter: Counter::ZERO,
398-
mcdc_params: mcdc::Parameters::None,
393+
mcdc_params: mcdc::Parameters::none(),
399394
file_id,
400395
expanded_file_id: 0,
401396
start_line,
@@ -420,7 +415,7 @@ impl CounterMappingRegion {
420415
Self {
421416
counter,
422417
false_counter: Counter::ZERO,
423-
mcdc_params: mcdc::Parameters::None,
418+
mcdc_params: mcdc::Parameters::none(),
424419
file_id,
425420
expanded_file_id: 0,
426421
start_line,

compiler/rustc_codegen_llvm/src/coverageinfo/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ fn ensure_mcdc_parameters<'ll, 'tcx>(
192192
if cx.mcdc_condition_bitmap_map.borrow().contains_key(&instance) {
193193
return;
194194
}
195-
195+
196196
let fn_name = bx.get_pgo_func_name_var(instance);
197197
let hash = bx.const_u64(function_coverage_info.function_source_hash);
198198
let bitmap_bytes = bx.const_u32(function_coverage_info.mcdc_bitmap_bytes);

compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ fromRust(LLVMRustCounterMappingRegionKind Kind) {
6666
report_fatal_error("Bad LLVMRustCounterMappingRegionKind!");
6767
}
6868

69-
enum class LLVMRustMCDCParametersTag : uint8_t {
69+
enum LLVMRustMCDCParametersTag {
7070
None = 0,
7171
Decision = 1,
7272
Branch = 2,
@@ -102,40 +102,40 @@ fromRust(LLVMRustMCDCParameters Params) {
102102
return parameter;
103103
case LLVMRustMCDCParametersTag::Decision:
104104
parameter.BitmapIdx =
105-
static_cast<unsigned>(Params.Payload.DecisionParameters.BitmapIdx),
105+
static_cast<unsigned>(Params.DecisionParameters.BitmapIdx),
106106
parameter.NumConditions =
107-
static_cast<unsigned>(Params.Payload.DecisionParameters.NumConditions);
107+
static_cast<unsigned>(Params.DecisionParameters.NumConditions);
108108
return parameter;
109109
case LLVMRustMCDCParametersTag::Branch:
110110
parameter.ID = static_cast<coverage::CounterMappingRegion::MCDCConditionID>(
111-
Params.Payload.BranchParameters.ConditionID),
111+
Params.BranchParameters.ConditionID),
112112
parameter.FalseID =
113113
static_cast<coverage::CounterMappingRegion::MCDCConditionID>(
114-
Params.Payload.BranchParameters.ConditionIDs[0]),
114+
Params.BranchParameters.ConditionIDs[0]),
115115
parameter.TrueID =
116116
static_cast<coverage::CounterMappingRegion::MCDCConditionID>(
117-
Params.Payload.BranchParameters.ConditionIDs[1]);
117+
Params.BranchParameters.ConditionIDs[1]);
118118
return parameter;
119119
}
120120
report_fatal_error("Bad LLVMRustMCDCParametersTag!");
121121
}
122122
#elif LLVM_VERSION_GE(19, 0)
123-
static coverage::mcdc::MCDCParameters fromRust(LLVMRustMCDCParameters Params) {
123+
static coverage::mcdc::Parameters fromRust(LLVMRustMCDCParameters Params) {
124124
switch (Params.Tag) {
125125
case LLVMRustMCDCParametersTag::None:
126-
return coverage::mcdc::MCDCParameters;
126+
return std::monostate();
127127
case LLVMRustMCDCParametersTag::Decision:
128128
return coverage::mcdc::DecisionParameters(
129-
Params.Payload.DecisionParameters.BitmapIdx,
130-
Params.Payload.DecisionParameters.NumConditions);
129+
Params.DecisionParameters.BitmapIdx,
130+
Params.DecisionParameters.NumConditions);
131131
case LLVMRustMCDCParametersTag::Branch:
132132
return coverage::mcdc::BranchParameters(
133133
static_cast<coverage::mcdc::ConditionID>(
134-
Params.Payload.BranchParameters.ConditionID),
135-
{static_cast<coverage::CounterMappingRegion::MCDCConditionID>(
136-
Params.Payload.BranchParameters.ConditionIDs[0]),
137-
static_cast<coverage::CounterMappingRegion::MCDCConditionID>(
138-
Params.Payload.BranchParameters.ConditionIDs[1])});
134+
Params.BranchParameters.ConditionID),
135+
{static_cast<coverage::mcdc::ConditionID>(
136+
Params.BranchParameters.ConditionIDs[0]),
137+
static_cast<coverage::mcdc::ConditionID>(
138+
Params.BranchParameters.ConditionIDs[1])});
139139
}
140140
report_fatal_error("Bad LLVMRustMCDCParametersTag!");
141141
}
@@ -214,7 +214,8 @@ extern "C" void LLVMRustCoverageWriteMappingToBuffer(
214214
RustMappingRegions, NumMappingRegions)) {
215215
MappingRegions.emplace_back(
216216
fromRust(Region.Count), fromRust(Region.FalseCount),
217-
#if LLVM_VERSION_GE(18, 0)
217+
#if LLVM_VERSION_GE(18, 0) && LLVM_VERSION_LT(19, 0)
218+
// LLVM 19 may move this argument to last.
218219
fromRust(Region.MCDCParameters),
219220
#endif
220221
Region.FileID, Region.ExpandedFileID, // File IDs, then region info.

0 commit comments

Comments
 (0)