Skip to content
This repository has been archived by the owner on Aug 22, 2024. It is now read-only.

Commit

Permalink
nightly-2023-08-04 (#1232)
Browse files Browse the repository at this point in the history
  • Loading branch information
hermanventer authored Aug 4, 2023
1 parent ed3f3b5 commit c999902
Show file tree
Hide file tree
Showing 12 changed files with 74 additions and 81 deletions.
37 changes: 20 additions & 17 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file modified binaries/summary_store.tar
Binary file not shown.
15 changes: 4 additions & 11 deletions checker/src/block_visitor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com
let mir::Statement { kind, source_info } = statement;
self.bv.current_span = source_info.span;
match kind {
mir::StatementKind::Assign(box (place, rvalue)) => {
self.visit_assign(place, rvalue.borrow())
}
mir::StatementKind::Assign(box (place, rvalue)) => self.visit_assign(place, rvalue),
mir::StatementKind::ConstEvalCounter => (),
mir::StatementKind::FakeRead(..) => assume_unreachable!(),
mir::StatementKind::SetDiscriminant {
Expand Down Expand Up @@ -806,9 +804,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com
for (path, val) in newly_discovered_paths.iter() {
paths_that_can_reach_functions.insert(path.clone());
let root = path.get_path_root().clone();
let entry = roots_that_can_reach_functions
.entry(root)
.or_insert_with(Vec::new);
let entry = roots_that_can_reach_functions.entry(root).or_default();
entry.push((path.clone(), val.clone()));
}
newly_discovered_paths.clear();
Expand Down Expand Up @@ -3514,8 +3510,6 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com
self.bv.update_value_at(discr_path, discr_data.clone());

if discr_has_data {
use std::ops::Deref;

// Obtains the name of this variant.
let name = {
let enum_def = ty.ty_adt_def().unwrap();
Expand All @@ -3531,7 +3525,7 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com
Path::new_qualified(
target_path.clone(),
Rc::new(PathSelector::Downcast(
Rc::from(name_str.deref()),
Rc::from(name_str),
discr_index.as_usize(),
discr_data,
)),
Expand Down Expand Up @@ -4068,10 +4062,9 @@ impl<'block, 'analysis, 'compilation, 'tcx> BlockVisitor<'block, 'analysis, 'com
from_end: *from_end,
},
mir::ProjectionElem::Downcast(name, index) => {
use std::ops::Deref;
let name_str = match name {
None => Rc::from(format!("variant#{}", index.as_usize())),
Some(name) => Rc::from(name.as_str().deref()),
Some(name) => Rc::from(name.as_str()),
};
let tag_value = if let TyKind::Adt(def, _) = base_ty.kind() {
if def.is_enum() {
Expand Down
5 changes: 1 addition & 4 deletions checker/src/call_graph.rs
Original file line number Diff line number Diff line change
Expand Up @@ -443,10 +443,7 @@ impl<'tcx> CallGraph<'tcx> {
/// Add a dominance relationship to the call graph.
/// Denotes that `defid1` is dominated by `defid2`.
pub fn add_dom(&mut self, defid1: DefId, defid2: DefId) {
self.dominance
.entry(defid1)
.or_insert_with(HashSet::<DefId>::new)
.insert(defid2);
self.dominance.entry(defid1).or_default().insert(defid2);
}

/// Add a new EdgeType to the call graph's `edge_types`.
Expand Down
1 change: 0 additions & 1 deletion checker/src/call_visitor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,6 @@ impl<'call, 'block, 'analysis, 'compilation, 'tcx>
};
if let Some(Ok(Some(instance))) = resolved_instance {
let resolved_def_id = instance.def.def_id();
let tcx = tcx;
let has_mir = tcx.is_mir_available(resolved_def_id);
if !has_mir && self.callee_known_name == KnownNames::StdCloneClone {
return;
Expand Down
43 changes: 21 additions & 22 deletions checker/src/known_names.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,6 @@ impl KnownNamesCache {
/// Uses information obtained from tcx to figure out which well known name (if any)
/// this def id corresponds to.
fn get_known_name_for(tcx: TyCtxt<'_>, def_id: DefId) -> KnownNames {
use std::ops::Deref;
use DefPathData::*;

let def_path = &tcx.def_path(def_id);
Expand Down Expand Up @@ -177,7 +176,7 @@ impl KnownNamesCache {
let get_known_name_for_alloc_namespace = |mut def_path_data_iter: Iter<'_>| {
if is_foreign_module(def_path_data_iter.next()) {
get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"__rust_alloc" => KnownNames::RustAlloc,
"__rust_alloc_zeroed" => KnownNames::RustAllocZeroed,
"__rust_dealloc" => KnownNames::RustDealloc,
Expand All @@ -192,7 +191,7 @@ impl KnownNamesCache {

let get_known_name_for_clone_trait = |mut def_path_data_iter: Iter<'_>| {
get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"clone" => KnownNames::StdCloneClone,
_ => KnownNames::None,
})
Expand All @@ -201,7 +200,7 @@ impl KnownNamesCache {

let get_known_name_for_clone_namespace = |mut def_path_data_iter: Iter<'_>| {
get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"Clone" => get_known_name_for_clone_trait(def_path_data_iter),
_ => KnownNames::None,
})
Expand All @@ -210,7 +209,7 @@ impl KnownNamesCache {

let get_known_name_for_future_namespace = |mut def_path_data_iter: Iter<'_>| {
get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"from_generator" => KnownNames::StdFutureFromGenerator,
_ => KnownNames::None,
})
Expand All @@ -220,7 +219,7 @@ impl KnownNamesCache {
let get_known_name_for_instrinsics_foreign_namespace =
|mut def_path_data_iter: Iter<'_>| {
get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"arith_offset" => KnownNames::StdIntrinsicsArithOffset,
"bitreverse" => KnownNames::StdIntrinsicsBitreverse,
"bswap" => KnownNames::StdIntrinsicsBswap,
Expand Down Expand Up @@ -296,7 +295,7 @@ impl KnownNamesCache {
get_known_name_for_instrinsics_foreign_namespace(def_path_data_iter)
} else {
get_path_data_elem_name(current_elem)
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"copy" => KnownNames::StdIntrinsicsCopy,
"copy_nonoverlapping" => {
KnownNames::StdIntrinsicsCopyNonOverlapping
Expand All @@ -313,7 +312,7 @@ impl KnownNamesCache {

let get_known_name_for_marker_namespace = |mut def_path_data_iter: Iter<'_>| {
get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"PhantomData" => KnownNames::StdMarkerPhantomData,
_ => KnownNames::None,
})
Expand All @@ -322,7 +321,7 @@ impl KnownNamesCache {

let get_known_name_for_mem_namespace = |mut def_path_data_iter: Iter<'_>| {
get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"replace" => KnownNames::StdMemReplace,
_ => KnownNames::None,
})
Expand All @@ -331,9 +330,9 @@ impl KnownNamesCache {

let get_known_name_for_ops_function_namespace = |mut def_path_data_iter: Iter<'_>| {
get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"Fn" | "FnMut" | "FnOnce" => get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"call" => KnownNames::StdOpsFunctionFnCall,
"call_mut" => KnownNames::StdOpsFunctionFnMutCallMut,
"call_once" | "call_once_force" => {
Expand All @@ -349,7 +348,7 @@ impl KnownNamesCache {

let get_known_name_for_ops_namespace = |mut def_path_data_iter: Iter<'_>| {
get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"function" => get_known_name_for_ops_function_namespace(def_path_data_iter),
_ => KnownNames::None,
})
Expand All @@ -358,7 +357,7 @@ impl KnownNamesCache {

let get_known_name_for_panicking_namespace = |mut def_path_data_iter: Iter<'_>| {
get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"assert_failed" => KnownNames::StdPanickingAssertFailed,
"begin_panic" | "panic" => KnownNames::StdPanickingBeginPanic,
"begin_panic_fmt" | "panic_fmt" => KnownNames::StdPanickingBeginPanicFmt,
Expand All @@ -372,7 +371,7 @@ impl KnownNamesCache {
def_path_data_iter.next(),
) {
Some(0) => get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"write_bytes" => KnownNames::StdIntrinsicsWriteBytes,
_ => KnownNames::None,
})
Expand All @@ -382,7 +381,7 @@ impl KnownNamesCache {

let get_known_name_for_ptr_namespace = |mut def_path_data_iter: Iter<'_>| {
get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"swap_nonoverlapping" => KnownNames::StdPtrSwapNonOverlapping,
"mut_ptr" => get_known_name_for_ptr_mut_ptr_namespace(def_path_data_iter),
_ => KnownNames::None,
Expand All @@ -395,7 +394,7 @@ impl KnownNamesCache {
def_path_data_iter.next(),
) {
Some(0) => get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"memcmp" => KnownNames::StdSliceCmpMemcmp,
_ => KnownNames::None,
})
Expand All @@ -408,7 +407,7 @@ impl KnownNamesCache {
def_path_data_iter.next(),
) {
Some(2) => get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"call_once" | "call_once_force" => KnownNames::StdOpsFunctionFnOnceCallOnce,
_ => KnownNames::None,
})
Expand All @@ -421,7 +420,7 @@ impl KnownNamesCache {
def_path_data_iter.next(),
) {
Some(1) => get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"MIN_NON_ZERO_CAP" => KnownNames::AllocRawVecMinNonZeroCap,
_ => KnownNames::None,
})
Expand All @@ -431,7 +430,7 @@ impl KnownNamesCache {

let get_known_name_for_slice_namespace = |mut def_path_data_iter: Iter<'_>| {
get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"cmp" => get_known_name_for_slice_cmp_namespace(def_path_data_iter),
_ => KnownNames::None,
})
Expand All @@ -441,7 +440,7 @@ impl KnownNamesCache {
//get_known_name_for_sync_namespace
let get_known_name_for_sync_namespace = |mut def_path_data_iter: Iter<'_>| {
get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"once" => get_known_name_for_sync_once_namespace(def_path_data_iter),
_ => KnownNames::None,
})
Expand All @@ -450,7 +449,7 @@ impl KnownNamesCache {

let get_known_name_for_known_crate = |mut def_path_data_iter: Iter<'_>| {
get_path_data_elem_name(def_path_data_iter.next())
.map(|n| match n.as_str().deref() {
.map(|n| match n.as_str() {
"alloc" => get_known_name_for_alloc_namespace(def_path_data_iter),
"clone" => get_known_name_for_clone_namespace(def_path_data_iter),
"future" => get_known_name_for_future_namespace(def_path_data_iter),
Expand Down Expand Up @@ -483,7 +482,7 @@ impl KnownNamesCache {
};

let crate_name = tcx.crate_name(def_id.krate);
match crate_name.as_str().deref() {
match crate_name.as_str() {
"alloc" | "core" | "mirai_annotations" | "std" => {
get_known_name_for_known_crate(def_path_data_iter)
}
Expand Down
4 changes: 2 additions & 2 deletions checker/src/summaries.rs
Original file line number Diff line number Diff line change
Expand Up @@ -526,7 +526,7 @@ impl<'a, 'tcx: 'a> PersistentSummaryCache<'tcx> {
.clone();
self.typed_cache_table
.entry(typed_cache_key)
.or_insert_with(HashMap::new)
.or_default()
.entry(function_id)
.or_insert(summary)
};
Expand Down Expand Up @@ -647,7 +647,7 @@ impl<'a, 'tcx: 'a> PersistentSummaryCache<'tcx> {
CallSiteKey::new(func_args.clone(), initial_type_cache.clone());
self.typed_cache_table
.entry(typed_cache_key)
.or_insert_with(HashMap::new)
.or_default()
.insert(func_id, summary);
} else {
self.typed_cache.insert(func_id, summary);
Expand Down
Loading

0 comments on commit c999902

Please sign in to comment.