record llvm cgu instruction stats
This commit is contained in:
parent
07c993eba8
commit
a30de6e7cb
6 changed files with 41 additions and 0 deletions
|
@ -761,6 +761,7 @@ pub(crate) unsafe fn codegen(
|
|||
EmitObj::None => {}
|
||||
}
|
||||
|
||||
record_llvm_cgu_instructions_stats(&cgcx.prof, llmod);
|
||||
drop(handlers);
|
||||
}
|
||||
|
||||
|
@ -974,3 +975,23 @@ fn record_artifact_size(
|
|||
self_profiler_ref.artifact_size(artifact_kind, artifact_name.to_string_lossy(), file_size);
|
||||
}
|
||||
}
|
||||
|
||||
fn record_llvm_cgu_instructions_stats(prof: &SelfProfilerRef, llmod: &llvm::Module) {
|
||||
if !prof.enabled() {
|
||||
return;
|
||||
}
|
||||
|
||||
let raw_stats =
|
||||
llvm::build_string(|s| unsafe { llvm::LLVMRustModuleInstructionStats(&llmod, s) })
|
||||
.expect("cannot get module instruction stats");
|
||||
|
||||
#[derive(serde::Deserialize)]
|
||||
struct InstructionsStats {
|
||||
module: String,
|
||||
total: u64,
|
||||
}
|
||||
|
||||
let InstructionsStats { module, total } =
|
||||
serde_json::from_str(&raw_stats).expect("cannot parse llvm cgu instructions stats");
|
||||
prof.artifact_size("cgu_instructions", module, total);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue