This repository was archived by the owner on May 28, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 4 files changed +13
-3
lines changed Expand file tree Collapse file tree 4 files changed +13
-3
lines changed Original file line number Diff line number Diff line change @@ -320,6 +320,7 @@ impl<'a> DiagnosticHandlers<'a> {
320320 } )
321321 . and_then ( |dir| dir. to_str ( ) . and_then ( |p| CString :: new ( p) . ok ( ) ) ) ;
322322
323+ let pgo_available = cgcx. opts . cg . profile_use . is_some ( ) ;
323324 let data = Box :: into_raw ( Box :: new ( ( cgcx, handler) ) ) ;
324325 unsafe {
325326 let old_handler = llvm:: LLVMRustContextGetDiagnosticHandler ( llcx) ;
@@ -333,6 +334,7 @@ impl<'a> DiagnosticHandlers<'a> {
333334 // The `as_ref()` is important here, otherwise the `CString` will be dropped
334335 // too soon!
335336 remark_file. as_ref ( ) . map ( |dir| dir. as_ptr ( ) ) . unwrap_or ( std:: ptr:: null ( ) ) ,
337+ pgo_available,
336338 ) ;
337339 DiagnosticHandlers { data, llcx, old_handler }
338340 }
Original file line number Diff line number Diff line change @@ -2332,6 +2332,7 @@ extern "C" {
23322332 remark_passes : * const * const c_char ,
23332333 remark_passes_len : usize ,
23342334 remark_file : * const c_char ,
2335+ pgo_available : bool ,
23352336 ) ;
23362337
23372338 #[ allow( improper_ctypes) ]
Original file line number Diff line number Diff line change @@ -1869,7 +1869,8 @@ extern "C" void LLVMRustContextConfigureDiagnosticHandler(
18691869 LLVMContextRef C, LLVMDiagnosticHandlerTy DiagnosticHandlerCallback,
18701870 void *DiagnosticHandlerContext, bool RemarkAllPasses,
18711871 const char * const * RemarkPasses, size_t RemarkPassesLen,
1872- const char * RemarkFilePath
1872+ const char * RemarkFilePath,
1873+ bool PGOAvailable
18731874) {
18741875
18751876 class RustDiagnosticHandler final : public DiagnosticHandler {
@@ -1967,8 +1968,10 @@ extern "C" void LLVMRustContextConfigureDiagnosticHandler(
19671968 std::unique_ptr<LLVMRemarkStreamer> LlvmRemarkStreamer;
19681969
19691970 if (RemarkFilePath != nullptr ) {
1970- // Enable PGO hotness data for remarks, if available
1971- unwrap (C)->setDiagnosticsHotnessRequested (true );
1971+ if (PGOAvailable) {
1972+ // Enable PGO hotness data for remarks, if available
1973+ unwrap (C)->setDiagnosticsHotnessRequested (true );
1974+ }
19721975
19731976 std::error_code EC;
19741977 RemarkFile = std::make_unique<ToolOutputFile>(
Original file line number Diff line number Diff line change 11# needs-profiler-support
2+ # ignore-windows-gnu
3+
4+ # FIXME(mati865): MinGW GCC miscompiles compiler-rt profiling library but with Clang it works
5+ # properly. Since we only have GCC on the CI ignore the test for now.
26
37include ../tools.mk
48
You can’t perform that action at this time.
0 commit comments