diff options
| author | bors <bors@rust-lang.org> | 2023-12-29 10:41:45 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-12-29 10:41:45 +0000 |
| commit | b74f5c4e8b5320ed24461c9b46a251e477e638b5 (patch) | |
| tree | 24ccc2ae09d517107f93fa53b07f5f06f28743a9 /compiler/rustc_mir_transform/src | |
| parent | 95613d1b23e2fc01a17f25a3221cdf01730305f9 (diff) | |
| parent | 761e0589c27ea0d5c247158ce7e093fb870589db (diff) | |
| download | rust-b74f5c4e8b5320ed24461c9b46a251e477e638b5.tar.gz rust-b74f5c4e8b5320ed24461c9b46a251e477e638b5.zip | |
Auto merge of #119407 - matthiaskrgr:rollup-bsoz7bn, r=matthiaskrgr
Rollup of 5 pull requests Successful merges: - #119375 (Merge Coroutine lowering functions) - #119393 (Use filter instead of filter_map in Parser::expected_one_of_not_found) - #119401 (coverage: Avoid a possible query stability hazard in `CoverageCounters`) - #119402 (Also walk bindings created by if-let guards) - #119404 (Enable profiler in dist-powerpc-linux) r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_mir_transform/src')
| -rw-r--r-- | compiler/rustc_mir_transform/src/coverage/counters.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/compiler/rustc_mir_transform/src/coverage/counters.rs b/compiler/rustc_mir_transform/src/coverage/counters.rs index 604589e5b96..d995d562521 100644 --- a/compiler/rustc_mir_transform/src/coverage/counters.rs +++ b/compiler/rustc_mir_transform/src/coverage/counters.rs @@ -1,4 +1,4 @@ -use rustc_data_structures::fx::FxHashMap; +use rustc_data_structures::fx::FxIndexMap; use rustc_data_structures::graph::WithNumNodes; use rustc_index::bit_set::BitSet; use rustc_index::IndexVec; @@ -47,7 +47,10 @@ pub(super) struct CoverageCounters { bcb_counters: IndexVec<BasicCoverageBlock, Option<BcbCounter>>, /// Coverage counters/expressions that are associated with the control-flow /// edge between two BCBs. - bcb_edge_counters: FxHashMap<(BasicCoverageBlock, BasicCoverageBlock), BcbCounter>, + /// + /// The iteration order of this map can affect the precise contents of MIR, + /// so we use `FxIndexMap` to avoid query stability hazards. + bcb_edge_counters: FxIndexMap<(BasicCoverageBlock, BasicCoverageBlock), BcbCounter>, /// Tracks which BCBs have a counter associated with some incoming edge. /// Only used by assertions, to verify that BCBs with incoming edge /// counters do not have their own physical counters (expressions are allowed). @@ -64,7 +67,7 @@ impl CoverageCounters { Self { next_counter_id: CounterId::START, bcb_counters: IndexVec::from_elem_n(None, num_bcbs), - bcb_edge_counters: FxHashMap::default(), + bcb_edge_counters: FxIndexMap::default(), bcb_has_incoming_edge_counters: BitSet::new_empty(num_bcbs), expressions: IndexVec::new(), } |
