Skip to content

Commit ac148ac

Browse files
Implement a pass manager
1 parent 7e61921 commit ac148ac

File tree

2 files changed

+376
-11
lines changed

2 files changed

+376
-11
lines changed

compiler/rustc_mir_transform/src/lib.rs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
#![feature(box_patterns)]
22
#![feature(box_syntax)]
3+
#![feature(const_fn_trait_bound)]
4+
#![feature(const_mut_refs)]
5+
#![feature(const_range_bounds)]
6+
#![feature(const_trait_impl)]
7+
#![feature(const_type_id)]
8+
#![feature(const_type_id_cmp)]
39
#![feature(crate_visibility_modifier)]
410
#![feature(in_band_lifetimes)]
511
#![feature(iter_zip)]
@@ -32,6 +38,11 @@ use rustc_middle::ty::query::Providers;
3238
use rustc_middle::ty::{self, TyCtxt, TypeFoldable};
3339
use rustc_span::{Span, Symbol};
3440

41+
use self::pass_manager::{Lint, MirPassC};
42+
43+
#[macro_use]
44+
mod pass_manager;
45+
3546
mod abort_unwinding_calls;
3647
mod add_call_guards;
3748
mod add_moves_for_packed_drops;
@@ -316,17 +327,11 @@ fn mir_promoted(
316327
}
317328
body.required_consts = required_consts;
318329

319-
let promote_pass = promote_consts::PromoteTemps::default();
320-
let promote: &[&dyn MirPass<'tcx>] = &[
321-
// What we need to run borrowck etc.
322-
&promote_pass,
323-
&simplify::SimplifyCfg::new("promote-consts"),
324-
];
325-
326-
let opt_coverage: &[&dyn MirPass<'tcx>] =
327-
if tcx.sess.instrument_coverage() { &[&coverage::InstrumentCoverage] } else { &[] };
328-
329-
run_passes(tcx, &mut body, MirPhase::ConstPromotion, &[promote, opt_coverage]);
330+
run_passes!(tcx, &mut body, [
331+
promote_consts::PromoteTemps,
332+
simplify::SimplifyCfg::new("promote-consts"),
333+
coverage::InstrumentCoverage,
334+
]);
330335

331336
let promoted = std::mem::take(&mut body.promoted_fragments);
332337
(tcx.alloc_steal_mir(body), tcx.alloc_steal_promoted(promoted))

0 commit comments

Comments
 (0)