Skip to content

Commit 5e96bb4

Browse files
committed
Replace all uses of log::log_enabled with Debug printers
1 parent 1f5d69d commit 5e96bb4

File tree

10 files changed

+219
-161
lines changed

10 files changed

+219
-161
lines changed

src/librustc_interface/passes.rs

+3-9
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::interface::{Compiler, Result};
22
use crate::proc_macro_decls;
33
use crate::util;
44

5-
use log::{info, log_enabled, warn};
5+
use log::{info, warn};
66
use once_cell::sync::Lazy;
77
use rustc_ast::mut_visit::MutVisitor;
88
use rustc_ast::{self, ast, visit};
@@ -1015,21 +1015,15 @@ pub fn start_codegen<'tcx>(
10151015
tcx: TyCtxt<'tcx>,
10161016
outputs: &OutputFilenames,
10171017
) -> Box<dyn Any> {
1018-
if log_enabled!(::log::Level::Info) {
1019-
println!("Pre-codegen");
1020-
tcx.print_debug_stats();
1021-
}
1018+
info!("Pre-codegen\n{:?}", tcx.debug_stats());
10221019

10231020
let (metadata, need_metadata_module) = encode_and_write_metadata(tcx, outputs);
10241021

10251022
let codegen = tcx.sess.time("codegen_crate", move || {
10261023
codegen_backend.codegen_crate(tcx, metadata, need_metadata_module)
10271024
});
10281025

1029-
if log_enabled!(::log::Level::Info) {
1030-
println!("Post-codegen");
1031-
tcx.print_debug_stats();
1032-
}
1026+
info!("Post-codegen\n{:?}", tcx.debug_stats());
10331027

10341028
if tcx.sess.opts.output_types.contains_key(&OutputType::Mir) {
10351029
if let Err(e) = mir::transform::dump_mir::emit_mir(tcx, outputs) {

src/librustc_metadata/creader.rs

+34-22
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use rustc_span::symbol::{sym, Symbol};
2626
use rustc_span::{Span, DUMMY_SP};
2727
use rustc_target::spec::{PanicStrategy, TargetTriple};
2828

29-
use log::{debug, info, log_enabled};
29+
use log::{debug, info};
3030
use proc_macro::bridge::client::ProcMacro;
3131
use std::path::Path;
3232
use std::{cmp, env, fs};
@@ -82,24 +82,38 @@ impl std::ops::Deref for CrateMetadataRef<'_> {
8282
}
8383
}
8484

85-
fn dump_crates(cstore: &CStore) {
86-
info!("resolved crates:");
87-
cstore.iter_crate_data(|cnum, data| {
88-
info!(" name: {}", data.name());
89-
info!(" cnum: {}", cnum);
90-
info!(" hash: {}", data.hash());
91-
info!(" reqd: {:?}", data.dep_kind());
92-
let CrateSource { dylib, rlib, rmeta } = data.source();
93-
if let Some(dylib) = dylib {
94-
info!(" dylib: {}", dylib.0.display());
95-
}
96-
if let Some(rlib) = rlib {
97-
info!(" rlib: {}", rlib.0.display());
98-
}
99-
if let Some(rmeta) = rmeta {
100-
info!(" rmeta: {}", rmeta.0.display());
101-
}
102-
});
85+
struct CrateDump<'a>(&'a CStore);
86+
87+
fn crate_dump(cstore: &'a CStore) -> impl std::fmt::Debug + 'a {
88+
CrateDump(cstore)
89+
}
90+
91+
impl<'a> std::fmt::Debug for CrateDump<'a> {
92+
fn fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
93+
writeln!(fmt, "resolved crates:")?;
94+
let mut res = Ok(());
95+
self.0.iter_crate_data(|cnum, data| {
96+
res = res.and(
97+
try {
98+
writeln!(fmt, " name: {}", data.name())?;
99+
writeln!(fmt, " cnum: {}", cnum)?;
100+
writeln!(fmt, " hash: {}", data.hash())?;
101+
writeln!(fmt, " reqd: {:?}", data.dep_kind())?;
102+
let CrateSource { dylib, rlib, rmeta } = data.source();
103+
if let Some(dylib) = dylib {
104+
writeln!(fmt, " dylib: {}", dylib.0.display())?;
105+
}
106+
if let Some(rlib) = rlib {
107+
writeln!(fmt, " rlib: {}", rlib.0.display())?;
108+
}
109+
if let Some(rmeta) = rmeta {
110+
writeln!(fmt, " rmeta: {}", rmeta.0.display())?;
111+
}
112+
},
113+
);
114+
});
115+
res
116+
}
103117
}
104118

105119
impl CStore {
@@ -864,9 +878,7 @@ impl<'a> CrateLoader<'a> {
864878
self.inject_allocator_crate(krate);
865879
self.inject_panic_runtime(krate);
866880

867-
if log_enabled!(log::Level::Info) {
868-
dump_crates(&self.cstore);
869-
}
881+
info!("{:?}", crate_dump(&self.cstore));
870882

871883
self.report_unused_deps(krate);
872884
}

src/librustc_metadata/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#![feature(proc_macro_internals)]
1010
#![feature(min_specialization)]
1111
#![feature(stmt_expr_attributes)]
12+
#![feature(try_blocks)]
1213
#![feature(never_type)]
1314
#![recursion_limit = "256"]
1415

src/librustc_middle/ty/context.rs

+28-17
Original file line numberDiff line numberDiff line change
@@ -1831,7 +1831,7 @@ pub mod tls {
18311831
}
18321832

18331833
macro_rules! sty_debug_print {
1834-
($ctxt: expr, $($variant: ident),*) => {{
1834+
($fmt: expr, $ctxt: expr, $($variant: ident),*) => {{
18351835
// Curious inner module to allow variant names to be used as
18361836
// variable names.
18371837
#[allow(non_snake_case)]
@@ -1848,7 +1848,7 @@ macro_rules! sty_debug_print {
18481848
all_infer: usize,
18491849
}
18501850

1851-
pub fn go(tcx: TyCtxt<'_>) {
1851+
pub fn go(fmt: &mut std::fmt::Formatter<'_>, tcx: TyCtxt<'_>) -> std::fmt::Result {
18521852
let mut total = DebugStat {
18531853
total: 0,
18541854
lt_infer: 0,
@@ -1878,18 +1878,18 @@ macro_rules! sty_debug_print {
18781878
if ct { total.ct_infer += 1; variant.ct_infer += 1 }
18791879
if lt && ty && ct { total.all_infer += 1; variant.all_infer += 1 }
18801880
}
1881-
println!("Ty interner total ty lt ct all");
1882-
$(println!(" {:18}: {uses:6} {usespc:4.1}%, \
1881+
writeln!(fmt, "Ty interner total ty lt ct all")?;
1882+
$(writeln!(fmt, " {:18}: {uses:6} {usespc:4.1}%, \
18831883
{ty:4.1}% {lt:5.1}% {ct:4.1}% {all:4.1}%",
18841884
stringify!($variant),
18851885
uses = $variant.total,
18861886
usespc = $variant.total as f64 * 100.0 / total.total as f64,
18871887
ty = $variant.ty_infer as f64 * 100.0 / total.total as f64,
18881888
lt = $variant.lt_infer as f64 * 100.0 / total.total as f64,
18891889
ct = $variant.ct_infer as f64 * 100.0 / total.total as f64,
1890-
all = $variant.all_infer as f64 * 100.0 / total.total as f64);
1890+
all = $variant.all_infer as f64 * 100.0 / total.total as f64)?;
18911891
)*
1892-
println!(" total {uses:6} \
1892+
writeln!(fmt, " total {uses:6} \
18931893
{ty:4.1}% {lt:5.1}% {ct:4.1}% {all:4.1}%",
18941894
uses = total.total,
18951895
ty = total.ty_infer as f64 * 100.0 / total.total as f64,
@@ -1899,14 +1899,23 @@ macro_rules! sty_debug_print {
18991899
}
19001900
}
19011901

1902-
inner::go($ctxt)
1902+
inner::go($fmt, $ctxt)
19031903
}}
19041904
}
19051905

19061906
impl<'tcx> TyCtxt<'tcx> {
1907-
pub fn print_debug_stats(self) {
1907+
pub fn debug_stats(self) -> impl std::fmt::Debug + 'tcx {
1908+
DebugStats(self)
1909+
}
1910+
}
1911+
1912+
struct DebugStats<'tcx>(TyCtxt<'tcx>);
1913+
1914+
impl std::fmt::Debug for DebugStats<'tcx> {
1915+
fn fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
19081916
sty_debug_print!(
1909-
self,
1917+
fmt,
1918+
self.0,
19101919
Adt,
19111920
Array,
19121921
Slice,
@@ -1926,14 +1935,16 @@ impl<'tcx> TyCtxt<'tcx> {
19261935
Projection,
19271936
Opaque,
19281937
Foreign
1929-
);
1930-
1931-
println!("InternalSubsts interner: #{}", self.interners.substs.len());
1932-
println!("Region interner: #{}", self.interners.region.len());
1933-
println!("Stability interner: #{}", self.stability_interner.len());
1934-
println!("Const Stability interner: #{}", self.const_stability_interner.len());
1935-
println!("Allocation interner: #{}", self.allocation_interner.len());
1936-
println!("Layout interner: #{}", self.layout_interner.len());
1938+
)?;
1939+
1940+
writeln!(fmt, "InternalSubsts interner: #{}", self.0.interners.substs.len())?;
1941+
writeln!(fmt, "Region interner: #{}", self.0.interners.region.len())?;
1942+
writeln!(fmt, "Stability interner: #{}", self.0.stability_interner.len())?;
1943+
writeln!(fmt, "Const Stability interner: #{}", self.0.const_stability_interner.len())?;
1944+
writeln!(fmt, "Allocation interner: #{}", self.0.allocation_interner.len())?;
1945+
writeln!(fmt, "Layout interner: #{}", self.0.layout_interner.len())?;
1946+
1947+
Ok(())
19371948
}
19381949
}
19391950

src/librustc_mir/const_eval/machine.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ impl<'mir, 'tcx> InterpCx<'mir, 'tcx, CompileTimeInterpreter<'mir, 'tcx>> {
5656
self.copy_op(place.into(), dest)?;
5757

5858
self.return_to_block(ret.map(|r| r.1))?;
59-
self.dump_place(*dest);
59+
trace!("{:?}", self.dump_place(*dest));
6060
Ok(true)
6161
}
6262

src/librustc_mir/interpret/eval_context.rs

+58-48
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use std::cell::Cell;
2-
use std::fmt::Write;
32
use std::mem;
43

54
use rustc_data_structures::fx::FxHashMap;
@@ -728,7 +727,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
728727
if let Some(return_place) = frame.return_place {
729728
let op = self.access_local(&frame, mir::RETURN_PLACE, None)?;
730729
self.copy_op_transmute(op, return_place)?;
731-
self.dump_place(*return_place);
730+
trace!("{:?}", self.dump_place(*return_place));
732731
} else {
733732
throw_ub!(Unreachable);
734733
}
@@ -823,9 +822,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
823822
// All locals have a backing allocation, even if the allocation is empty
824823
// due to the local having ZST type.
825824
let ptr = ptr.assert_ptr();
826-
if log_enabled!(::log::Level::Trace) {
827-
self.memory.dump_alloc(ptr.alloc_id);
828-
}
825+
trace!("{:?}", self.memory.dump_alloc(ptr.alloc_id));
829826
self.memory.deallocate_local(ptr)?;
830827
};
831828
Ok(())
@@ -881,47 +878,77 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
881878
self.raw_const_to_mplace(val)
882879
}
883880

884-
pub fn dump_place(&self, place: Place<M::PointerTag>) {
885-
// Debug output
886-
if !log_enabled!(::log::Level::Trace) {
887-
return;
881+
#[must_use]
882+
pub fn dump_place(&'a self, place: Place<M::PointerTag>) -> PlacePrinter<'a, 'mir, 'tcx, M> {
883+
PlacePrinter { ecx: self, place }
884+
}
885+
886+
#[must_use]
887+
pub fn generate_stacktrace(&self) -> Vec<FrameInfo<'tcx>> {
888+
let mut frames = Vec::new();
889+
for frame in self.stack().iter().rev() {
890+
let source_info = frame.current_source_info();
891+
let lint_root = source_info.and_then(|source_info| {
892+
match &frame.body.source_scopes[source_info.scope].local_data {
893+
mir::ClearCrossCrate::Set(data) => Some(data.lint_root),
894+
mir::ClearCrossCrate::Clear => None,
895+
}
896+
});
897+
let span = source_info.map_or(DUMMY_SP, |source_info| source_info.span);
898+
899+
frames.push(FrameInfo { span, instance: frame.instance, lint_root });
888900
}
889-
match place {
901+
trace!("generate stacktrace: {:#?}", frames);
902+
frames
903+
}
904+
}
905+
906+
#[doc(hidden)]
907+
/// Helper struct for the `dump_place` function.
908+
pub struct PlacePrinter<'a, 'mir, 'tcx, M: Machine<'mir, 'tcx>> {
909+
ecx: &'a InterpCx<'mir, 'tcx, M>,
910+
place: Place<M::PointerTag>,
911+
}
912+
913+
impl<'a, 'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> std::fmt::Debug
914+
for PlacePrinter<'a, 'mir, 'tcx, M>
915+
{
916+
fn fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
917+
match self.place {
890918
Place::Local { frame, local } => {
891919
let mut allocs = Vec::new();
892-
let mut msg = format!("{:?}", local);
893-
if frame != self.frame_idx() {
894-
write!(msg, " ({} frames up)", self.frame_idx() - frame).unwrap();
920+
write!(fmt, "{:?}", local)?;
921+
if frame != self.ecx.frame_idx() {
922+
write!(fmt, " ({} frames up)", self.ecx.frame_idx() - frame)?;
895923
}
896-
write!(msg, ":").unwrap();
924+
write!(fmt, ":")?;
897925

898-
match self.stack()[frame].locals[local].value {
899-
LocalValue::Dead => write!(msg, " is dead").unwrap(),
900-
LocalValue::Uninitialized => write!(msg, " is uninitialized").unwrap(),
926+
match self.ecx.stack()[frame].locals[local].value {
927+
LocalValue::Dead => write!(fmt, " is dead")?,
928+
LocalValue::Uninitialized => write!(fmt, " is uninitialized")?,
901929
LocalValue::Live(Operand::Indirect(mplace)) => match mplace.ptr {
902930
Scalar::Ptr(ptr) => {
903931
write!(
904-
msg,
932+
fmt,
905933
" by align({}){} ref:",
906934
mplace.align.bytes(),
907935
match mplace.meta {
908936
MemPlaceMeta::Meta(meta) => format!(" meta({:?})", meta),
909937
MemPlaceMeta::Poison | MemPlaceMeta::None => String::new(),
910938
}
911-
)
912-
.unwrap();
939+
)?;
913940
allocs.push(ptr.alloc_id);
914941
}
915-
ptr => write!(msg, " by integral ref: {:?}", ptr).unwrap(),
942+
ptr => write!(fmt, " by integral ref: {:?}", ptr)?,
916943
},
917944
LocalValue::Live(Operand::Immediate(Immediate::Scalar(val))) => {
918-
write!(msg, " {:?}", val).unwrap();
945+
write!(fmt, " {:?}", val)?;
919946
if let ScalarMaybeUninit::Scalar(Scalar::Ptr(ptr)) = val {
920947
allocs.push(ptr.alloc_id);
921948
}
922949
}
923950
LocalValue::Live(Operand::Immediate(Immediate::ScalarPair(val1, val2))) => {
924-
write!(msg, " ({:?}, {:?})", val1, val2).unwrap();
951+
write!(fmt, " ({:?}, {:?})", val1, val2)?;
925952
if let ScalarMaybeUninit::Scalar(Scalar::Ptr(ptr)) = val1 {
926953
allocs.push(ptr.alloc_id);
927954
}
@@ -931,36 +958,19 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
931958
}
932959
}
933960

934-
trace!("{}", msg);
935-
self.memory.dump_allocs(allocs);
961+
write!(fmt, ": {:?}", self.ecx.memory.dump_allocs(allocs))
936962
}
937963
Place::Ptr(mplace) => match mplace.ptr {
938-
Scalar::Ptr(ptr) => {
939-
trace!("by align({}) ref:", mplace.align.bytes());
940-
self.memory.dump_alloc(ptr.alloc_id);
941-
}
942-
ptr => trace!(" integral by ref: {:?}", ptr),
964+
Scalar::Ptr(ptr) => write!(
965+
fmt,
966+
"by align({}) ref: {:?}",
967+
mplace.align.bytes(),
968+
self.ecx.memory.dump_alloc(ptr.alloc_id)
969+
),
970+
ptr => write!(fmt, " integral by ref: {:?}", ptr),
943971
},
944972
}
945973
}
946-
947-
pub fn generate_stacktrace(&self) -> Vec<FrameInfo<'tcx>> {
948-
let mut frames = Vec::new();
949-
for frame in self.stack().iter().rev() {
950-
let source_info = frame.current_source_info();
951-
let lint_root = source_info.and_then(|source_info| {
952-
match &frame.body.source_scopes[source_info.scope].local_data {
953-
mir::ClearCrossCrate::Set(data) => Some(data.lint_root),
954-
mir::ClearCrossCrate::Clear => None,
955-
}
956-
});
957-
let span = source_info.map_or(DUMMY_SP, |source_info| source_info.span);
958-
959-
frames.push(FrameInfo { span, instance: frame.instance, lint_root });
960-
}
961-
trace!("generate stacktrace: {:#?}", frames);
962-
frames
963-
}
964974
}
965975

966976
impl<'ctx, 'mir, 'tcx, Tag, Extra> HashStable<StableHashingContext<'ctx>>

src/librustc_mir/interpret/intrinsics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
430430
_ => return Ok(false),
431431
}
432432

433-
self.dump_place(*dest);
433+
trace!("{:?}", self.dump_place(*dest));
434434
self.go_to_block(ret);
435435
Ok(true)
436436
}

0 commit comments

Comments
 (0)