Auto merge of #93284 - eholk:disable-drop-range-analysis, r=pnkfelix
Disable drop range analysis The previous PR, #93165, still performed the drop range analysis despite ignoring the results. Unfortunately, there were ICEs in the analysis as well, so some packages failed to build (see the issue #93197 for an example). This change further disables the analysis and just provides dummy results in that case.
This commit is contained in:
commit
686663a49e
2 changed files with 33 additions and 12 deletions
|
@ -37,21 +37,27 @@ pub fn compute_drop_ranges<'a, 'tcx>(
|
|||
def_id: DefId,
|
||||
body: &'tcx Body<'tcx>,
|
||||
) -> DropRanges {
|
||||
let consumed_borrowed_places = find_consumed_and_borrowed(fcx, def_id, body);
|
||||
if super::ENABLE_DROP_TRACKING {
|
||||
let consumed_borrowed_places = find_consumed_and_borrowed(fcx, def_id, body);
|
||||
|
||||
let num_exprs = fcx.tcx.region_scope_tree(def_id).body_expr_count(body.id()).unwrap_or(0);
|
||||
let mut drop_ranges = build_control_flow_graph(
|
||||
fcx.tcx.hir(),
|
||||
fcx.tcx,
|
||||
&fcx.typeck_results.borrow(),
|
||||
consumed_borrowed_places,
|
||||
body,
|
||||
num_exprs,
|
||||
);
|
||||
let num_exprs = fcx.tcx.region_scope_tree(def_id).body_expr_count(body.id()).unwrap_or(0);
|
||||
let mut drop_ranges = build_control_flow_graph(
|
||||
fcx.tcx.hir(),
|
||||
fcx.tcx,
|
||||
&fcx.typeck_results.borrow(),
|
||||
consumed_borrowed_places,
|
||||
body,
|
||||
num_exprs,
|
||||
);
|
||||
|
||||
drop_ranges.propagate_to_fixpoint();
|
||||
drop_ranges.propagate_to_fixpoint();
|
||||
|
||||
DropRanges { tracked_value_map: drop_ranges.tracked_value_map, nodes: drop_ranges.nodes }
|
||||
DropRanges { tracked_value_map: drop_ranges.tracked_value_map, nodes: drop_ranges.nodes }
|
||||
} else {
|
||||
// If drop range tracking is not enabled, skip all the analysis and produce an
|
||||
// empty set of DropRanges.
|
||||
DropRanges { tracked_value_map: FxHashMap::default(), nodes: IndexVec::new() }
|
||||
}
|
||||
}
|
||||
|
||||
/// Applies `f` to consumable node in the HIR subtree pointed to by `place`.
|
||||
|
|
15
src/test/ui/async-await/issue-93197.rs
Normal file
15
src/test/ui/async-await/issue-93197.rs
Normal file
|
@ -0,0 +1,15 @@
|
|||
// Regression test for #93197
|
||||
// check-pass
|
||||
// edition:2021
|
||||
|
||||
#![feature(try_blocks)]
|
||||
|
||||
use std::sync::{mpsc, mpsc::SendError};
|
||||
|
||||
pub async fn foo() {
|
||||
let (tx, _) = mpsc::channel();
|
||||
|
||||
let _: Result<(), SendError<&str>> = try { tx.send("hello")?; };
|
||||
}
|
||||
|
||||
fn main() {}
|
Loading…
Add table
Reference in a new issue