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:
parent
55be59d2ce
commit
2d47816cba
10 changed files with 35 additions and 0 deletions
|
@ -181,6 +181,11 @@ impl WriteBackendMethods for LlvmCodegenBackend {
|
|||
llvm::LLVMRustPrintPassTimings();
|
||||
}
|
||||
}
|
||||
fn print_statistics(&self) {
|
||||
unsafe {
|
||||
llvm::LLVMRustPrintStatistics();
|
||||
}
|
||||
}
|
||||
fn run_link(
|
||||
cgcx: &CodegenContext<Self>,
|
||||
diag_handler: &Handler,
|
||||
|
|
|
@ -1870,6 +1870,9 @@ extern "C" {
|
|||
/// Print the pass timings since static dtors aren't picking them up.
|
||||
pub fn LLVMRustPrintPassTimings();
|
||||
|
||||
/// Print the statistics since static dtors aren't picking them up.
|
||||
pub fn LLVMRustPrintStatistics();
|
||||
|
||||
pub fn LLVMStructCreateNamed(C: &Context, Name: *const c_char) -> &Type;
|
||||
|
||||
pub fn LLVMStructSetBody<'a>(
|
||||
|
|
|
@ -110,6 +110,10 @@ unsafe fn configure_llvm(sess: &Session) {
|
|||
// Use non-zero `import-instr-limit` multiplier for cold callsites.
|
||||
add("-import-cold-multiplier=0.1", false);
|
||||
|
||||
if sess.print_llvm_stats() {
|
||||
add("-stats", false);
|
||||
}
|
||||
|
||||
for arg in sess_args {
|
||||
add(&(*arg), true);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue