mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-29 19:47:38 +00:00

By using FxIndexMap instead of FxHashMap, so that the order of visiting of locals is deterministic. We also need to bless copy_propagation_arg.foo.DestinationPropagation.panic*.diff. Do not review the diff of the diff. Instead look at the diff file before and after this commit. Both before and after this commit, 3 statements are replaced with nop. It's just that due to change in ordering, different statements are replaced. But the net result is the same.
29 lines
1.1 KiB
Rust
29 lines
1.1 KiB
Rust
use std::hash::BuildHasherDefault;
|
|
|
|
pub use rustc_hash::{FxHashMap, FxHashSet, FxHasher};
|
|
|
|
pub type StdEntry<'a, K, V> = std::collections::hash_map::Entry<'a, K, V>;
|
|
|
|
pub type FxIndexMap<K, V> = indexmap::IndexMap<K, V, BuildHasherDefault<FxHasher>>;
|
|
pub type FxIndexSet<V> = indexmap::IndexSet<V, BuildHasherDefault<FxHasher>>;
|
|
pub type IndexEntry<'a, K, V> = indexmap::map::Entry<'a, K, V>;
|
|
pub type IndexOccupiedEntry<'a, K, V> = indexmap::map::OccupiedEntry<'a, K, V>;
|
|
|
|
#[macro_export]
|
|
macro_rules! define_id_collections {
|
|
($map_name:ident, $set_name:ident, $entry_name:ident, $key:ty) => {
|
|
pub type $map_name<T> = $crate::unord::UnordMap<$key, T>;
|
|
pub type $set_name = $crate::unord::UnordSet<$key>;
|
|
pub type $entry_name<'a, T> = $crate::fx::StdEntry<'a, $key, T>;
|
|
};
|
|
}
|
|
|
|
#[macro_export]
|
|
macro_rules! define_stable_id_collections {
|
|
($map_name:ident, $set_name:ident, $entry_name:ident, $key:ty) => {
|
|
pub type $map_name<T> = $crate::fx::FxIndexMap<$key, T>;
|
|
pub type $set_name = $crate::fx::FxIndexSet<$key>;
|
|
pub type $entry_name<'a, T> = $crate::fx::IndexEntry<'a, $key, T>;
|
|
};
|
|
}
|