Skip to content

Commit c7fb1e2

Browse files
committed
Extract rustc_mir_pretty crate
1 parent 8b09ba6 commit c7fb1e2

File tree

31 files changed

+86
-36
lines changed

31 files changed

+86
-36
lines changed

Cargo.lock

+22-3
Original file line numberDiff line numberDiff line change
@@ -3670,6 +3670,7 @@ dependencies = [
36703670
"rustc_lexer",
36713671
"rustc_middle",
36723672
"rustc_mir_dataflow",
3673+
"rustc_mir_pretty",
36733674
"rustc_serialize",
36743675
"rustc_session",
36753676
"rustc_span",
@@ -3782,6 +3783,7 @@ dependencies = [
37823783
"rustc_macros",
37833784
"rustc_middle",
37843785
"rustc_mir_dataflow",
3786+
"rustc_mir_pretty",
37853787
"rustc_query_system",
37863788
"rustc_session",
37873789
"rustc_span",
@@ -3839,6 +3841,7 @@ dependencies = [
38393841
"rustc_lint",
38403842
"rustc_metadata",
38413843
"rustc_middle",
3844+
"rustc_mir_pretty",
38423845
"rustc_parse",
38433846
"rustc_plugin_impl",
38443847
"rustc_save_analysis",
@@ -4132,8 +4135,6 @@ version = "0.0.0"
41324135
dependencies = [
41334136
"bitflags",
41344137
"chalk-ir",
4135-
"either",
4136-
"gsgdt",
41374138
"polonius-engine",
41384139
"rand 0.8.4",
41394140
"rand_xoshiro 0.6.0",
@@ -4146,7 +4147,6 @@ dependencies = [
41464147
"rustc_data_structures",
41474148
"rustc_errors",
41484149
"rustc_feature",
4149-
"rustc_graphviz",
41504150
"rustc_hir",
41514151
"rustc_index",
41524152
"rustc_macros",
@@ -4195,6 +4195,7 @@ dependencies = [
41954195
"rustc_hir",
41964196
"rustc_index",
41974197
"rustc_middle",
4198+
"rustc_mir_pretty",
41984199
"rustc_serialize",
41994200
"rustc_session",
42004201
"rustc_span",
@@ -4203,6 +4204,23 @@ dependencies = [
42034204
"tracing",
42044205
]
42054206

4207+
[[package]]
4208+
name = "rustc_mir_pretty"
4209+
version = "0.0.0"
4210+
dependencies = [
4211+
"either",
4212+
"gsgdt",
4213+
"rustc_data_structures",
4214+
"rustc_graphviz",
4215+
"rustc_hir",
4216+
"rustc_index",
4217+
"rustc_middle",
4218+
"rustc_session",
4219+
"rustc_span",
4220+
"rustc_target",
4221+
"tracing",
4222+
]
4223+
42064224
[[package]]
42074225
name = "rustc_mir_transform"
42084226
version = "0.0.0"
@@ -4218,6 +4236,7 @@ dependencies = [
42184236
"rustc_index",
42194237
"rustc_middle",
42204238
"rustc_mir_dataflow",
4239+
"rustc_mir_pretty",
42214240
"rustc_query_system",
42224241
"rustc_serialize",
42234242
"rustc_session",

compiler/rustc_borrowck/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ rustc_lexer = { path = "../rustc_lexer" }
2222
rustc_middle = { path = "../rustc_middle" }
2323
rustc_const_eval = { path = "../rustc_const_eval" }
2424
rustc_mir_dataflow = { path = "../rustc_mir_dataflow" }
25+
rustc_mir_pretty = { path = "../rustc_mir_pretty" }
2526
rustc_serialize = { path = "../rustc_serialize" }
2627
rustc_session = { path = "../rustc_session" }
2728
rustc_target = { path = "../rustc_target" }

compiler/rustc_borrowck/src/nll.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ use rustc_data_structures::vec_map::VecMap;
44
use rustc_errors::Diagnostic;
55
use rustc_index::vec::IndexVec;
66
use rustc_infer::infer::InferCtxt;
7-
use rustc_middle::mir::{create_dump_file, dump_enabled, dump_mir, PassWhere};
87
use rustc_middle::mir::{
98
BasicBlock, Body, ClosureOutlivesSubject, ClosureRegionRequirements, LocalKind, Location,
109
Promoted,
1110
};
1211
use rustc_middle::ty::{self, OpaqueTypeKey, RegionKind, RegionVid, Ty};
12+
use rustc_mir_pretty::{create_dump_file, dump_enabled, dump_mir, PassWhere};
1313
use rustc_span::symbol::sym;
1414
use std::env;
1515
use std::fmt::Debug;

compiler/rustc_codegen_cranelift/src/base.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ pub(crate) fn codegen_fn<'tcx>(
2222
let mir = tcx.instance_mir(instance.def);
2323
let _mir_guard = crate::PrintOnPanic(|| {
2424
let mut buf = Vec::new();
25-
rustc_middle::mir::write_mir_pretty(tcx, Some(instance.def_id()), &mut buf).unwrap();
25+
rustc_mir_pretty::write_mir_pretty(tcx, Some(instance.def_id()), &mut buf).unwrap();
2626
String::from_utf8_lossy(&buf).into_owned()
2727
});
2828

compiler/rustc_codegen_cranelift/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ extern crate rustc_incremental;
1717
extern crate rustc_index;
1818
extern crate rustc_interface;
1919
extern crate rustc_metadata;
20+
extern crate rustc_mir_pretty;
2021
extern crate rustc_session;
2122
extern crate rustc_span;
2223
extern crate rustc_target;

compiler/rustc_const_eval/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ rustc_infer = { path = "../rustc_infer" }
1919
rustc_macros = { path = "../rustc_macros" }
2020
rustc_middle = { path = "../rustc_middle" }
2121
rustc_mir_dataflow = { path = "../rustc_mir_dataflow" }
22+
rustc_mir_pretty = { path = "../rustc_mir_pretty" }
2223
rustc_query_system = { path = "../rustc_query_system" }
2324
rustc_session = { path = "../rustc_session" }
2425
rustc_target = { path = "../rustc_target" }

compiler/rustc_const_eval/src/const_eval/eval_queries.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ use rustc_errors::ErrorReported;
1010
use rustc_hir::def::DefKind;
1111
use rustc_middle::mir;
1212
use rustc_middle::mir::interpret::ErrorHandled;
13-
use rustc_middle::mir::pretty::display_allocation;
1413
use rustc_middle::traits::Reveal;
1514
use rustc_middle::ty::layout::LayoutOf;
1615
use rustc_middle::ty::print::with_no_trimmed_paths;
1716
use rustc_middle::ty::{self, subst::Subst, TyCtxt};
17+
use rustc_mir_pretty::display_allocation;
1818
use rustc_span::source_map::Span;
1919
use rustc_target::abi::Abi;
2020
use std::borrow::Cow;

compiler/rustc_const_eval/src/interpret/memory.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ use std::ptr;
1515

1616
use rustc_ast::Mutability;
1717
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
18-
use rustc_middle::mir::display_allocation;
1918
use rustc_middle::ty::{Instance, ParamEnv, TyCtxt};
19+
use rustc_mir_pretty::display_allocation;
2020
use rustc_target::abi::{Align, HasDataLayout, Size, TargetDataLayout};
2121

2222
use super::{

compiler/rustc_driver/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ rustc_feature = { path = "../rustc_feature" }
2222
rustc_hir = { path = "../rustc_hir" }
2323
rustc_hir_pretty = { path = "../rustc_hir_pretty" }
2424
rustc_metadata = { path = "../rustc_metadata" }
25+
rustc_mir_pretty = { path = "../rustc_mir_pretty" }
2526
rustc_const_eval = { path = "../rustc_const_eval" }
2627
rustc_parse = { path = "../rustc_parse" }
2728
rustc_plugin_impl = { path = "../rustc_plugin_impl" }

compiler/rustc_driver/src/pretty.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ use rustc_errors::ErrorReported;
66
use rustc_hir as hir;
77
use rustc_hir_pretty as pprust_hir;
88
use rustc_middle::hir::map as hir_map;
9-
use rustc_middle::mir::{write_mir_graphviz, write_mir_pretty};
109
use rustc_middle::ty::{self, TyCtxt};
10+
use rustc_mir_pretty::{write_mir_graphviz, write_mir_pretty};
1111
use rustc_session::config::{Input, PpAstTreeMode, PpHirMode, PpMode, PpSourceMode};
1212
use rustc_session::Session;
1313
use rustc_span::symbol::Ident;

compiler/rustc_middle/Cargo.toml

-3
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ doctest = false
99
[dependencies]
1010
rustc_arena = { path = "../rustc_arena" }
1111
bitflags = "1.2.1"
12-
either = "1.5.0"
13-
gsgdt = "0.1.2"
1412
tracing = "0.1"
1513
rustc-rayon = "0.3.1"
1614
rustc-rayon-core = "0.3.1"
@@ -24,7 +22,6 @@ rustc_macros = { path = "../rustc_macros" }
2422
rustc_data_structures = { path = "../rustc_data_structures" }
2523
rustc_query_system = { path = "../rustc_query_system" }
2624
rustc_errors = { path = "../rustc_errors" }
27-
rustc_graphviz = { path = "../rustc_graphviz" }
2825
rustc_index = { path = "../rustc_index" }
2926
rustc_serialize = { path = "../rustc_serialize" }
3027
rustc_ast = { path = "../rustc_ast" }

compiler/rustc_middle/src/mir/mod.rs

-11
Original file line numberDiff line numberDiff line change
@@ -41,30 +41,19 @@ use self::predecessors::{PredecessorCache, Predecessors};
4141
pub use self::query::*;
4242

4343
pub mod coverage;
44-
mod generic_graph;
45-
pub mod generic_graphviz;
4644
mod graph_cyclic_cache;
47-
pub mod graphviz;
4845
pub mod interpret;
4946
pub mod mono;
5047
pub mod patch;
5148
mod predecessors;
52-
pub mod pretty;
5349
mod query;
54-
pub mod spanview;
5550
pub mod tcx;
5651
pub mod terminator;
5752
pub use terminator::*;
5853
pub mod traversal;
5954
mod type_foldable;
6055
pub mod visit;
6156

62-
pub use self::generic_graph::graphviz_safe_def_name;
63-
pub use self::graphviz::write_mir_graphviz;
64-
pub use self::pretty::{
65-
create_dump_file, display_allocation, dump_enabled, dump_mir, write_mir_pretty, PassWhere,
66-
};
67-
6857
/// Types for locals
6958
pub type LocalDecls<'tcx> = IndexVec<Local, LocalDecl<'tcx>>;
7059

compiler/rustc_mir_dataflow/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ rustc_graphviz = { path = "../rustc_graphviz" }
1717
rustc_hir = { path = "../rustc_hir" }
1818
rustc_index = { path = "../rustc_index" }
1919
rustc_middle = { path = "../rustc_middle" }
20+
rustc_mir_pretty = { path = "../rustc_mir_pretty" }
2021
rustc_serialize = { path = "../rustc_serialize" }
2122
rustc_session = { path = "../rustc_session" }
2223
rustc_target = { path = "../rustc_target" }

compiler/rustc_mir_dataflow/src/framework/engine.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ use rustc_hir::def_id::DefId;
1111
use rustc_index::bit_set::BitSet;
1212
use rustc_index::vec::{Idx, IndexVec};
1313
use rustc_middle::mir::{self, traversal, BasicBlock};
14-
use rustc_middle::mir::{create_dump_file, dump_enabled};
1514
use rustc_middle::ty::TyCtxt;
15+
use rustc_mir_pretty::{create_dump_file, dump_enabled};
1616
use rustc_span::symbol::{sym, Symbol};
1717

1818
use super::fmt::DebugWithContext;

compiler/rustc_mir_dataflow/src/framework/graphviz.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ use std::{io, ops, str};
66

77
use regex::Regex;
88
use rustc_graphviz as dot;
9-
use rustc_middle::mir::graphviz_safe_def_name;
109
use rustc_middle::mir::{self, BasicBlock, Body, Location};
10+
use rustc_mir_pretty::graphviz_safe_def_name;
1111

1212
use super::fmt::{DebugDiffWithAdapter, DebugWithAdapter, DebugWithContext};
1313
use super::{Analysis, Direction, Results, ResultsRefCursor, ResultsVisitor};

compiler/rustc_mir_pretty/Cargo.toml

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
[package]
2+
name = "rustc_mir_pretty"
3+
version = "0.0.0"
4+
edition = "2021"
5+
6+
[lib]
7+
doctest = false
8+
9+
[dependencies]
10+
either = "1.5.0"
11+
gsgdt = "0.1.2"
12+
tracing = "0.1"
13+
rustc_data_structures = { path = "../rustc_data_structures" }
14+
rustc_graphviz = { path = "../rustc_graphviz" }
15+
rustc_hir = { path = "../rustc_hir" }
16+
rustc_index = { path = "../rustc_index" }
17+
rustc_middle = { path = "../rustc_middle" }
18+
rustc_session = { path = "../rustc_session" }
19+
rustc_span = { path = "../rustc_span" }
20+
rustc_target = { path = "../rustc_target" }

compiler/rustc_mir_pretty/src/lib.rs

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#![feature(in_band_lifetimes)]
2+
#![feature(try_blocks)]
3+
4+
#[macro_use]
5+
extern crate rustc_middle;
6+
#[macro_use]
7+
extern crate tracing;
8+
9+
mod generic_graph;
10+
pub mod generic_graphviz;
11+
mod graphviz;
12+
mod pretty;
13+
pub mod spanview;
14+
15+
pub use self::generic_graph::graphviz_safe_def_name;
16+
pub use self::graphviz::write_mir_graphviz;
17+
pub use self::pretty::{
18+
create_dump_file, display_allocation, dump_enabled, dump_mir, write_mir_pretty, PassWhere,
19+
};

compiler/rustc_mir_transform/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ rustc_index = { path = "../rustc_index" }
1919
rustc_middle = { path = "../rustc_middle" }
2020
rustc_const_eval = { path = "../rustc_const_eval" }
2121
rustc_mir_dataflow = { path = "../rustc_mir_dataflow" }
22+
rustc_mir_pretty = { path = "../rustc_mir_pretty" }
2223
rustc_query_system = { path = "../rustc_query_system" }
2324
rustc_serialize = { path = "../rustc_serialize" }
2425
rustc_session = { path = "../rustc_session" }

compiler/rustc_mir_transform/src/coverage/debug.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -111,14 +111,13 @@
111111
use super::graph::{BasicCoverageBlock, BasicCoverageBlockData, CoverageGraph};
112112
use super::spans::CoverageSpan;
113113

114-
use rustc_middle::mir::create_dump_file;
115-
use rustc_middle::mir::generic_graphviz::GraphvizWriter;
116-
use rustc_middle::mir::spanview::{self, SpanViewable};
117-
118114
use rustc_data_structures::fx::FxHashMap;
119115
use rustc_middle::mir::coverage::*;
120116
use rustc_middle::mir::{self, BasicBlock, TerminatorKind};
121117
use rustc_middle::ty::TyCtxt;
118+
use rustc_mir_pretty::create_dump_file;
119+
use rustc_mir_pretty::generic_graphviz::GraphvizWriter;
120+
use rustc_mir_pretty::spanview::{self, SpanViewable};
122121
use rustc_span::Span;
123122

124123
use std::iter;

compiler/rustc_mir_transform/src/coverage/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ use rustc_index::vec::IndexVec;
2121
use rustc_middle::hir;
2222
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrFlags;
2323
use rustc_middle::mir::coverage::*;
24-
use rustc_middle::mir::dump_enabled;
2524
use rustc_middle::mir::{
2625
self, BasicBlock, BasicBlockData, Coverage, SourceInfo, Statement, StatementKind, Terminator,
2726
TerminatorKind,
2827
};
2928
use rustc_middle::ty::TyCtxt;
29+
use rustc_mir_pretty::dump_enabled;
3030
use rustc_span::def_id::DefId;
3131
use rustc_span::source_map::SourceMap;
3232
use rustc_span::{CharPos, ExpnKind, Pos, SourceFile, Span, Symbol};

compiler/rustc_mir_transform/src/coverage/spans.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ use super::debug::term_type;
22
use super::graph::{BasicCoverageBlock, BasicCoverageBlockData, CoverageGraph, START_BCB};
33

44
use rustc_data_structures::graph::WithNumNodes;
5-
use rustc_middle::mir::spanview::source_range_no_file;
65
use rustc_middle::mir::{
76
self, AggregateKind, BasicBlock, FakeReadCause, Rvalue, Statement, StatementKind, Terminator,
87
TerminatorKind,
98
};
109
use rustc_middle::ty::TyCtxt;
10+
use rustc_mir_pretty::spanview::source_range_no_file;
1111
use rustc_span::source_map::original_sp;
1212
use rustc_span::{BytePos, ExpnKind, MacroKind, Span, Symbol};
1313

compiler/rustc_mir_transform/src/dest_prop.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,14 @@ use rustc_index::{
105105
};
106106
use rustc_middle::mir::tcx::PlaceTy;
107107
use rustc_middle::mir::visit::{MutVisitor, PlaceContext, Visitor};
108-
use rustc_middle::mir::{dump_mir, PassWhere};
109108
use rustc_middle::mir::{
110109
traversal, Body, InlineAsmOperand, Local, LocalKind, Location, Operand, Place, PlaceElem,
111110
Rvalue, Statement, StatementKind, Terminator, TerminatorKind,
112111
};
113112
use rustc_middle::ty::TyCtxt;
114113
use rustc_mir_dataflow::impls::{MaybeInitializedLocals, MaybeLiveLocals};
115114
use rustc_mir_dataflow::Analysis;
115+
use rustc_mir_pretty::{dump_mir, PassWhere};
116116

117117
// Empirical measurements have resulted in some observations:
118118
// - Running on a body with a single block and 500 locals takes barely any time

compiler/rustc_mir_transform/src/dump_mir.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ use std::fs::File;
55
use std::io;
66

77
use crate::MirPass;
8-
use rustc_middle::mir::write_mir_pretty;
98
use rustc_middle::mir::Body;
109
use rustc_middle::ty::TyCtxt;
10+
use rustc_mir_pretty::write_mir_pretty;
1111
use rustc_session::config::{OutputFilenames, OutputType};
1212

1313
pub struct Marker(pub &'static str);

compiler/rustc_mir_transform/src/generator.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ use rustc_hir as hir;
5757
use rustc_hir::lang_items::LangItem;
5858
use rustc_index::bit_set::{BitMatrix, BitSet};
5959
use rustc_index::vec::{Idx, IndexVec};
60-
use rustc_middle::mir::dump_mir;
6160
use rustc_middle::mir::visit::{MutVisitor, PlaceContext, Visitor};
6261
use rustc_middle::mir::*;
6362
use rustc_middle::ty::subst::{Subst, SubstsRef};
@@ -68,6 +67,7 @@ use rustc_mir_dataflow::impls::{
6867
};
6968
use rustc_mir_dataflow::storage;
7069
use rustc_mir_dataflow::{self, Analysis};
70+
use rustc_mir_pretty::dump_mir;
7171
use rustc_target::abi::VariantIdx;
7272
use rustc_target::spec::PanicStrategy;
7373
use std::{iter, ops};

0 commit comments

Comments
 (0)