1
Fork 0

rustc_llvm: Add a -Z print-llvm-stats option to expose LLVM statistics.

LLVM has a neat [statistics] feature that tracks how often optimizations kick
in. It's very handy for optimization work. Since we expose the LLVM pass
timings, I thought it made sense to expose the LLVM statistics too.

[statistics]: https://llvm.org/docs/ProgrammersManual.html#the-statistic-class-stats-option
This commit is contained in:
Patrick Walton 2022-11-05 01:08:57 -07:00 committed by khei4
parent 55be59d2ce
commit 2d47816cba
10 changed files with 35 additions and 0 deletions

View file

@ -1945,6 +1945,10 @@ impl<B: ExtraBackendMethods> OngoingCodegen<B> {
self.backend.print_pass_timings()
}
if sess.print_llvm_stats() {
self.backend.print_statistics()
}
(
CodegenResults {
metadata: self.metadata,

View file

@ -35,6 +35,7 @@ pub trait WriteBackendMethods: 'static + Sized + Clone {
cached_modules: Vec<(SerializedModule<Self::ModuleBuffer>, WorkProduct)>,
) -> Result<(Vec<LtoModuleCodegen<Self>>, Vec<WorkProduct>), FatalError>;
fn print_pass_timings(&self);
fn print_statistics(&self);
unsafe fn optimize(
cgcx: &CodegenContext<Self>,
diag_handler: &Handler,