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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user