Skip to content

Commit a95c8c6

Browse files
committed
librustc_llvm: Show PGO diagnostics properly.
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
1 parent aaeb40a commit a95c8c6

File tree

4 files changed

+16
-2
lines changed

4 files changed

+16
-2
lines changed

src/librustc_llvm/diagnostic.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ impl InlineAsmDiagnostic {
121121
pub enum Diagnostic {
122122
Optimization(OptimizationDiagnostic),
123123
InlineAsm(InlineAsmDiagnostic),
124+
PGO(DiagnosticInfoRef),
124125

125126
/// LLVM has other types that we do not wrap here.
126127
UnknownDiagnostic(DiagnosticInfoRef),
@@ -160,6 +161,10 @@ impl Diagnostic {
160161
Optimization(OptimizationDiagnostic::unpack(OptimizationFailure, di))
161162
}
162163

164+
Dk::PGOProfile => {
165+
PGO(di)
166+
}
167+
163168
_ => UnknownDiagnostic(di),
164169
}
165170
}

src/librustc_llvm/ffi.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ pub enum DiagnosticKind {
322322
OptimizationRemarkAnalysisAliasing,
323323
OptimizationRemarkOther,
324324
OptimizationFailure,
325+
PGOProfile,
325326
}
326327

327328
/// LLVMRustArchiveKind

src/librustc_trans/back/write.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -498,8 +498,13 @@ unsafe extern "C" fn diagnostic_handler(info: DiagnosticInfoRef, user: *mut c_vo
498498
opt.message));
499499
}
500500
}
501-
502-
_ => (),
501+
llvm::diagnostic::PGO(diagnostic_ref) => {
502+
let msg = llvm::build_string(|s| {
503+
llvm::LLVMRustWriteDiagnosticInfoToString(diagnostic_ref, s)
504+
}).expect("non-UTF8 PGO diagnostic");
505+
diag_handler.note_without_error(&msg);
506+
}
507+
llvm::diagnostic::UnknownDiagnostic(..) => {},
503508
}
504509
}
505510

src/rustllvm/RustWrapper.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,6 +1021,7 @@ enum class LLVMRustDiagnosticKind {
10211021
OptimizationRemarkAnalysisAliasing,
10221022
OptimizationRemarkOther,
10231023
OptimizationFailure,
1024+
PGOProfile,
10241025
};
10251026

10261027
static LLVMRustDiagnosticKind toRust(DiagnosticKind Kind) {
@@ -1043,6 +1044,8 @@ static LLVMRustDiagnosticKind toRust(DiagnosticKind Kind) {
10431044
return LLVMRustDiagnosticKind::OptimizationRemarkAnalysisFPCommute;
10441045
case DK_OptimizationRemarkAnalysisAliasing:
10451046
return LLVMRustDiagnosticKind::OptimizationRemarkAnalysisAliasing;
1047+
case DK_PGOProfile:
1048+
return LLVMRustDiagnosticKind::PGOProfile;
10461049
default:
10471050
return (Kind >= DK_FirstRemark && Kind <= DK_LastRemark)
10481051
? LLVMRustDiagnosticKind::OptimizationRemarkOther

0 commit comments

Comments
 (0)