diff options
| author | bors <bors@rust-lang.org> | 2023-07-21 05:36:01 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-07-21 05:36:01 +0000 |
| commit | 78f97c9b25863a80dc73818d3d542c86d69b7a40 (patch) | |
| tree | ed4a088fdd7fd8bd703cd48de2378de9dfeade52 /compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp | |
| parent | 1a44b45987a56dc1bbb4fc8327aa46efa58d5eaa (diff) | |
| parent | 8c6ef1d2bc7c4bce0427c728443589877bd329e6 (diff) | |
| download | rust-78f97c9b25863a80dc73818d3d542c86d69b7a40.tar.gz rust-78f97c9b25863a80dc73818d3d542c86d69b7a40.zip | |
Auto merge of #113911 - matthiaskrgr:rollup-wk6cr7v, r=matthiaskrgr
Rollup of 5 pull requests
Successful merges:
- #113380 (style-guide: clean up "must"/"should"/"may")
- #113723 (Resurrect: rustc_llvm: Add a -Z `print-codegen-stats` option to expose LLVM statistics.)
- #113780 (Support `--print KIND=PATH` command line syntax)
- #113810 (Make {Rc,Arc}::allocator associated functions)
- #113907 (Minor improvements to Windows TLS dtors)
Failed merges:
- #113392 (style-guide: Some cleanups from the fmt-rfcs repo history)
r? `@ghost`
`@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp')
| -rw-r--r-- | compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp index ab5fa961b95..870a2e02cba 100644 --- a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp +++ b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp @@ -1,4 +1,5 @@ #include "LLVMWrapper.h" +#include "llvm/ADT/Statistic.h" #include "llvm/IR/DebugInfoMetadata.h" #include "llvm/IR/DiagnosticHandler.h" #include "llvm/IR/DiagnosticInfo.h" @@ -111,9 +112,26 @@ extern "C" void LLVMRustSetNormalizedTarget(LLVMModuleRef M, unwrap(M)->setTargetTriple(Triple::normalize(Triple)); } -extern "C" void LLVMRustPrintPassTimings() { - raw_fd_ostream OS(2, false); // stderr. - TimerGroup::printAll(OS); +extern "C" const char *LLVMRustPrintPassTimings(size_t *Len) { + std::string buf; + raw_string_ostream SS(buf); + TimerGroup::printAll(SS); + SS.flush(); + *Len = buf.length(); + char *CStr = (char *)malloc(*Len); + memcpy(CStr, buf.c_str(), *Len); + return CStr; +} + +extern "C" const char *LLVMRustPrintStatistics(size_t *Len) { + std::string buf; + raw_string_ostream SS(buf); + llvm::PrintStatistics(SS); + SS.flush(); + *Len = buf.length(); + char *CStr = (char *)malloc(*Len); + memcpy(CStr, buf.c_str(), *Len); + return CStr; } extern "C" LLVMValueRef LLVMRustGetNamedValue(LLVMModuleRef M, const char *Name, |
