Skip to content

Commit 2aae619

Browse files
committed
Move MirPass to rustc_mir_transform.
Because that's now the only crate that uses it. Moving stuff out of `rustc_middle` is always welcome. I chose to use `impl crate::MirPass`/`impl crate::MirLint` (with explicit `crate::`) everywhere because that's the only mention of `MirPass`/`MirLint` used in all of these files. (Prior to this change, `MirPass` was mostly imported via `use rustc_middle::mir::*` items.)
1 parent 5410900 commit 2aae619

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+143
-162
lines changed

compiler/rustc_middle/src/mir/mod.rs

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
//! [rustc dev guide]: https://rustc-dev-guide.rust-lang.org/mir/index.html
44
55
use std::borrow::Cow;
6-
use std::cell::RefCell;
7-
use std::collections::hash_map::Entry;
86
use std::fmt::{self, Debug, Formatter};
97
use std::ops::{Index, IndexMut};
108
use std::{iter, mem};
@@ -26,7 +24,6 @@ use rustc_index::bit_set::BitSet;
2624
use rustc_index::{Idx, IndexSlice, IndexVec};
2725
use rustc_macros::{HashStable, TyDecodable, TyEncodable, TypeFoldable, TypeVisitable};
2826
use rustc_serialize::{Decodable, Encodable};
29-
use rustc_session::Session;
3027
use rustc_span::source_map::Spanned;
3128
use rustc_span::symbol::Symbol;
3229
use rustc_span::{Span, DUMMY_SP};
@@ -106,65 +103,6 @@ impl<'tcx> HasLocalDecls<'tcx> for Body<'tcx> {
106103
}
107104
}
108105

109-
thread_local! {
110-
static PASS_NAMES: RefCell<FxHashMap<&'static str, &'static str>> = {
111-
RefCell::new(FxHashMap::default())
112-
};
113-
}
114-
115-
/// Converts a MIR pass name into a snake case form to match the profiling naming style.
116-
fn to_profiler_name(type_name: &'static str) -> &'static str {
117-
PASS_NAMES.with(|names| match names.borrow_mut().entry(type_name) {
118-
Entry::Occupied(e) => *e.get(),
119-
Entry::Vacant(e) => {
120-
let snake_case: String = type_name
121-
.chars()
122-
.flat_map(|c| {
123-
if c.is_ascii_uppercase() {
124-
vec!['_', c.to_ascii_lowercase()]
125-
} else if c == '-' {
126-
vec!['_']
127-
} else {
128-
vec![c]
129-
}
130-
})
131-
.collect();
132-
let result = &*String::leak(format!("mir_pass{}", snake_case));
133-
e.insert(result);
134-
result
135-
}
136-
})
137-
}
138-
139-
/// A streamlined trait that you can implement to create a pass; the
140-
/// pass will be named after the type, and it will consist of a main
141-
/// loop that goes over each available MIR and applies `run_pass`.
142-
pub trait MirPass<'tcx> {
143-
fn name(&self) -> &'static str {
144-
// FIXME Simplify the implementation once more `str` methods get const-stable.
145-
// See copypaste in `MirLint`
146-
const {
147-
let name = std::any::type_name::<Self>();
148-
crate::util::common::c_name(name)
149-
}
150-
}
151-
152-
fn profiler_name(&self) -> &'static str {
153-
to_profiler_name(self.name())
154-
}
155-
156-
/// Returns `true` if this pass is enabled with the current combination of compiler flags.
157-
fn is_enabled(&self, _sess: &Session) -> bool {
158-
true
159-
}
160-
161-
fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>);
162-
163-
fn is_mir_dump_enabled(&self) -> bool {
164-
true
165-
}
166-
}
167-
168106
impl MirPhase {
169107
/// Gets the index of the current MirPhase within the set of all `MirPhase`s.
170108
///

compiler/rustc_middle/src/util/common.rs

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,3 @@ pub fn to_readable_str(mut val: usize) -> String {
2020

2121
groups.join("_")
2222
}
23-
24-
// const wrapper for `if let Some((_, tail)) = name.rsplit_once(':') { tail } else { name }`
25-
pub const fn c_name(name: &'static str) -> &'static str {
26-
// FIXME Simplify the implementation once more `str` methods get const-stable.
27-
// and inline into call site
28-
let bytes = name.as_bytes();
29-
let mut i = bytes.len();
30-
while i > 0 && bytes[i - 1] != b':' {
31-
i = i - 1;
32-
}
33-
let (_, bytes) = bytes.split_at(i);
34-
match std::str::from_utf8(bytes) {
35-
Ok(name) => name,
36-
Err(_) => name,
37-
}
38-
}

compiler/rustc_mir_transform/src/abort_unwinding_calls.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use rustc_target::spec::PanicStrategy;
2222
#[derive(PartialEq)]
2323
pub struct AbortUnwindingCalls;
2424

25-
impl<'tcx> MirPass<'tcx> for AbortUnwindingCalls {
25+
impl<'tcx> crate::MirPass<'tcx> for AbortUnwindingCalls {
2626
fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
2727
let def_id = body.source.def_id();
2828
let kind = tcx.def_kind(def_id);

compiler/rustc_mir_transform/src/add_call_guards.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ pub use self::AddCallGuards::*;
3030
*
3131
*/
3232

33-
impl<'tcx> MirPass<'tcx> for AddCallGuards {
33+
impl<'tcx> crate::MirPass<'tcx> for AddCallGuards {
3434
fn run_pass(&self, _tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
3535
self.add_call_guards(body);
3636
}

compiler/rustc_mir_transform/src/add_moves_for_packed_drops.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ use crate::util;
3737
/// blowup.
3838
pub struct AddMovesForPackedDrops;
3939

40-
impl<'tcx> MirPass<'tcx> for AddMovesForPackedDrops {
40+
impl<'tcx> crate::MirPass<'tcx> for AddMovesForPackedDrops {
4141
fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
4242
debug!("add_moves_for_packed_drops({:?} @ {:?})", body.source, body.span);
4343
add_moves_for_packed_drops(tcx, body);

compiler/rustc_mir_transform/src/add_retag.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ fn may_contain_reference<'tcx>(ty: Ty<'tcx>, depth: u32, tcx: TyCtxt<'tcx>) -> b
4848
}
4949
}
5050

51-
impl<'tcx> MirPass<'tcx> for AddRetag {
51+
impl<'tcx> crate::MirPass<'tcx> for AddRetag {
5252
fn is_enabled(&self, sess: &rustc_session::Session) -> bool {
5353
sess.opts.unstable_opts.mir_emit_retag
5454
}

compiler/rustc_mir_transform/src/add_subtyping_projections.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ pub fn subtype_finder<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
6262
checker.patcher.apply(body);
6363
}
6464

65-
impl<'tcx> MirPass<'tcx> for Subtyper {
65+
impl<'tcx> crate::MirPass<'tcx> for Subtyper {
6666
fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
6767
subtype_finder(tcx, body);
6868
}

compiler/rustc_mir_transform/src/check_alignment.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use tracing::{debug, trace};
99

1010
pub struct CheckAlignment;
1111

12-
impl<'tcx> MirPass<'tcx> for CheckAlignment {
12+
impl<'tcx> crate::MirPass<'tcx> for CheckAlignment {
1313
fn is_enabled(&self, sess: &Session) -> bool {
1414
// FIXME(#112480) MSVC and rustc disagree on minimum stack alignment on x86 Windows
1515
if sess.target.llvm_target == "i686-pc-windows-msvc" {

compiler/rustc_mir_transform/src/check_const_item_mutation.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ use rustc_session::lint::builtin::CONST_ITEM_MUTATION;
66
use rustc_span::def_id::DefId;
77
use rustc_span::Span;
88

9-
use crate::{errors, MirLint};
9+
use crate::errors;
1010

1111
pub struct CheckConstItemMutation;
1212

13-
impl<'tcx> MirLint<'tcx> for CheckConstItemMutation {
13+
impl<'tcx> crate::MirLint<'tcx> for CheckConstItemMutation {
1414
fn run_lint(&self, tcx: TyCtxt<'tcx>, body: &Body<'tcx>) {
1515
let mut checker = ConstMutationChecker { body, tcx, target_local: None };
1616
checker.visit_body(body);

compiler/rustc_mir_transform/src/check_packed_ref.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ use rustc_middle::mir::*;
33
use rustc_middle::span_bug;
44
use rustc_middle::ty::{self, TyCtxt};
55

6-
use crate::{errors, util, MirLint};
6+
use crate::{errors, util};
77

88
pub struct CheckPackedRef;
99

10-
impl<'tcx> MirLint<'tcx> for CheckPackedRef {
10+
impl<'tcx> crate::MirLint<'tcx> for CheckPackedRef {
1111
fn run_lint(&self, tcx: TyCtxt<'tcx>, body: &Body<'tcx>) {
1212
let param_env = tcx.param_env(body.source.def_id());
1313
let source_info = SourceInfo::outermost(body.span);

compiler/rustc_mir_transform/src/cleanup_post_borrowck.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,9 @@ use rustc_middle::mir::{Body, BorrowKind, CastKind, Rvalue, StatementKind, Termi
2121
use rustc_middle::ty::adjustment::PointerCoercion;
2222
use rustc_middle::ty::TyCtxt;
2323

24-
use crate::MirPass;
25-
2624
pub struct CleanupPostBorrowck;
2725

28-
impl<'tcx> MirPass<'tcx> for CleanupPostBorrowck {
26+
impl<'tcx> crate::MirPass<'tcx> for CleanupPostBorrowck {
2927
fn run_pass(&self, _tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
3028
for basic_block in body.basic_blocks.as_mut() {
3129
for statement in basic_block.statements.iter_mut() {

compiler/rustc_mir_transform/src/copy_prop.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use crate::ssa::SsaLocals;
1919
/// We want to replace all those locals by `_a`, either copied or moved.
2020
pub struct CopyProp;
2121

22-
impl<'tcx> MirPass<'tcx> for CopyProp {
22+
impl<'tcx> crate::MirPass<'tcx> for CopyProp {
2323
fn is_enabled(&self, sess: &rustc_session::Session) -> bool {
2424
sess.mir_opt_level() >= 1
2525
}

compiler/rustc_mir_transform/src/coroutine.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1535,7 +1535,7 @@ fn check_field_tys_sized<'tcx>(
15351535
}
15361536
}
15371537

1538-
impl<'tcx> MirPass<'tcx> for StateTransform {
1538+
impl<'tcx> crate::MirPass<'tcx> for StateTransform {
15391539
fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
15401540
let Some(old_yield_ty) = body.yield_ty() else {
15411541
// This only applies to coroutines

compiler/rustc_mir_transform/src/coverage/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,13 @@ use tracing::{debug, debug_span, instrument, trace};
2828
use crate::coverage::counters::{CounterIncrementSite, CoverageCounters};
2929
use crate::coverage::graph::CoverageGraph;
3030
use crate::coverage::mappings::ExtractedMappings;
31-
use crate::MirPass;
3231

3332
/// Inserts `StatementKind::Coverage` statements that either instrument the binary with injected
3433
/// counters, via intrinsic `llvm.instrprof.increment`, and/or inject metadata used during codegen
3534
/// to construct the coverage map.
3635
pub struct InstrumentCoverage;
3736

38-
impl<'tcx> MirPass<'tcx> for InstrumentCoverage {
37+
impl<'tcx> crate::MirPass<'tcx> for InstrumentCoverage {
3938
fn is_enabled(&self, sess: &rustc_session::Session) -> bool {
4039
sess.instrument_coverage()
4140
}

compiler/rustc_mir_transform/src/ctfe_limit.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,9 @@ use rustc_middle::mir::{
88
use rustc_middle::ty::TyCtxt;
99
use tracing::instrument;
1010

11-
use crate::MirPass;
12-
1311
pub struct CtfeLimit;
1412

15-
impl<'tcx> MirPass<'tcx> for CtfeLimit {
13+
impl<'tcx> crate::MirPass<'tcx> for CtfeLimit {
1614
#[instrument(skip(self, _tcx, body))]
1715
fn run_pass(&self, _tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
1816
let doms = body.basic_blocks.dominators();

compiler/rustc_mir_transform/src/dataflow_const_prop.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const PLACE_LIMIT: usize = 100;
2828

2929
pub struct DataflowConstProp;
3030

31-
impl<'tcx> MirPass<'tcx> for DataflowConstProp {
31+
impl<'tcx> crate::MirPass<'tcx> for DataflowConstProp {
3232
fn is_enabled(&self, sess: &rustc_session::Session) -> bool {
3333
sess.mir_opt_level() >= 3
3434
}

compiler/rustc_mir_transform/src/dead_store_elimination.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ pub enum DeadStoreElimination {
132132
Final,
133133
}
134134

135-
impl<'tcx> MirPass<'tcx> for DeadStoreElimination {
135+
impl<'tcx> crate::MirPass<'tcx> for DeadStoreElimination {
136136
fn name(&self) -> &'static str {
137137
match self {
138138
DeadStoreElimination::Initial => "DeadStoreElimination-initial",

compiler/rustc_mir_transform/src/deduplicate_blocks.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use super::simplify::simplify_cfg;
1515

1616
pub struct DeduplicateBlocks;
1717

18-
impl<'tcx> MirPass<'tcx> for DeduplicateBlocks {
18+
impl<'tcx> crate::MirPass<'tcx> for DeduplicateBlocks {
1919
fn is_enabled(&self, sess: &rustc_session::Session) -> bool {
2020
sess.mir_opt_level() >= 4
2121
}

compiler/rustc_mir_transform/src/deref_separator.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ pub fn deref_finder<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
7878
checker.patcher.apply(body);
7979
}
8080

81-
impl<'tcx> MirPass<'tcx> for Derefer {
81+
impl<'tcx> crate::MirPass<'tcx> for Derefer {
8282
fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
8383
deref_finder(tcx, body);
8484
}

compiler/rustc_mir_transform/src/dest_prop.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,11 +146,9 @@ use rustc_mir_dataflow::points::{save_as_intervals, DenseLocationMap, PointIndex
146146
use rustc_mir_dataflow::Analysis;
147147
use tracing::{debug, trace};
148148

149-
use crate::MirPass;
150-
151149
pub struct DestinationPropagation;
152150

153-
impl<'tcx> MirPass<'tcx> for DestinationPropagation {
151+
impl<'tcx> crate::MirPass<'tcx> for DestinationPropagation {
154152
fn is_enabled(&self, sess: &rustc_session::Session) -> bool {
155153
// For now, only run at MIR opt level 3. Two things need to be changed before this can be
156154
// turned on by default:

compiler/rustc_mir_transform/src/dump_mir.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@ use rustc_middle::mir::{write_mir_pretty, Body};
77
use rustc_middle::ty::TyCtxt;
88
use rustc_session::config::{OutFileName, OutputType};
99

10-
use crate::MirPass;
11-
1210
pub struct Marker(pub &'static str);
1311

14-
impl<'tcx> MirPass<'tcx> for Marker {
12+
impl<'tcx> crate::MirPass<'tcx> for Marker {
1513
fn name(&self) -> &'static str {
1614
self.0
1715
}

compiler/rustc_mir_transform/src/early_otherwise_branch.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ use super::simplify::simplify_cfg;
9292
/// ```
9393
pub struct EarlyOtherwiseBranch;
9494

95-
impl<'tcx> MirPass<'tcx> for EarlyOtherwiseBranch {
95+
impl<'tcx> crate::MirPass<'tcx> for EarlyOtherwiseBranch {
9696
fn is_enabled(&self, sess: &rustc_session::Session) -> bool {
9797
sess.mir_opt_level() >= 2
9898
}

compiler/rustc_mir_transform/src/elaborate_box_derefs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ impl<'tcx, 'a> MutVisitor<'tcx> for ElaborateBoxDerefVisitor<'tcx, 'a> {
8888

8989
pub struct ElaborateBoxDerefs;
9090

91-
impl<'tcx> MirPass<'tcx> for ElaborateBoxDerefs {
91+
impl<'tcx> crate::MirPass<'tcx> for ElaborateBoxDerefs {
9292
fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
9393
if let Some(def_id) = tcx.lang_items().owned_box() {
9494
let unique_did = tcx.adt_def(def_id).non_enum_variant().fields[FieldIdx::ZERO].did;

compiler/rustc_mir_transform/src/elaborate_drops.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ use crate::deref_separator::deref_finder;
4949
/// ```
5050
pub struct ElaborateDrops;
5151

52-
impl<'tcx> MirPass<'tcx> for ElaborateDrops {
52+
impl<'tcx> crate::MirPass<'tcx> for ElaborateDrops {
5353
#[instrument(level = "trace", skip(self, tcx, body))]
5454
fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
5555
debug!("elaborate_drops({:?} @ {:?})", body.source, body.span);

compiler/rustc_mir_transform/src/function_item_references.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ use rustc_span::symbol::sym;
99
use rustc_span::Span;
1010
use rustc_target::spec::abi::Abi;
1111

12-
use crate::{errors, MirLint};
12+
use crate::errors;
1313

1414
pub struct FunctionItemReferences;
1515

16-
impl<'tcx> MirLint<'tcx> for FunctionItemReferences {
16+
impl<'tcx> crate::MirLint<'tcx> for FunctionItemReferences {
1717
fn run_lint(&self, tcx: TyCtxt<'tcx>, body: &Body<'tcx>) {
1818
let mut checker = FunctionItemRefChecker { tcx, body };
1919
checker.visit_body(body);

compiler/rustc_mir_transform/src/gvn.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ use crate::ssa::{AssignedValue, SsaLocals};
111111

112112
pub struct GVN;
113113

114-
impl<'tcx> MirPass<'tcx> for GVN {
114+
impl<'tcx> crate::MirPass<'tcx> for GVN {
115115
fn is_enabled(&self, sess: &rustc_session::Session) -> bool {
116116
sess.mir_opt_level() >= 2
117117
}

compiler/rustc_mir_transform/src/inline.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ struct CallSite<'tcx> {
4242
source_info: SourceInfo,
4343
}
4444

45-
impl<'tcx> MirPass<'tcx> for Inline {
45+
impl<'tcx> crate::MirPass<'tcx> for Inline {
4646
fn is_enabled(&self, sess: &rustc_session::Session) -> bool {
4747
// FIXME(#127234): Coverage instrumentation currently doesn't handle inlined
4848
// MIR correctly when Modified Condition/Decision Coverage is enabled.

compiler/rustc_mir_transform/src/instsimplify.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ impl InstSimplify {
2727
}
2828
}
2929

30-
impl<'tcx> MirPass<'tcx> for InstSimplify {
30+
impl<'tcx> crate::MirPass<'tcx> for InstSimplify {
3131
fn name(&self) -> &'static str {
3232
self.name()
3333
}

compiler/rustc_mir_transform/src/jump_threading.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ const MAX_BACKTRACK: usize = 5;
6161
const MAX_COST: usize = 100;
6262
const MAX_PLACES: usize = 100;
6363

64-
impl<'tcx> MirPass<'tcx> for JumpThreading {
64+
impl<'tcx> crate::MirPass<'tcx> for JumpThreading {
6565
fn is_enabled(&self, sess: &rustc_session::Session) -> bool {
6666
sess.mir_opt_level() >= 2
6767
}

compiler/rustc_mir_transform/src/known_panics_lint.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,10 @@ use rustc_target::abi::{Abi, FieldIdx, HasDataLayout, Size, TargetDataLayout, Va
2525
use tracing::{debug, instrument, trace};
2626

2727
use crate::errors::{AssertLint, AssertLintKind};
28-
use crate::MirLint;
2928

3029
pub struct KnownPanicsLint;
3130

32-
impl<'tcx> MirLint<'tcx> for KnownPanicsLint {
31+
impl<'tcx> crate::MirLint<'tcx> for KnownPanicsLint {
3332
fn run_lint(&self, tcx: TyCtxt<'tcx>, body: &Body<'tcx>) {
3433
if body.tainted_by_errors.is_some() {
3534
return;

0 commit comments

Comments
 (0)