Skip to content

Commit e2cc7e6

Browse files
committed
avoid ICE when formatting TargetMachine config errors
1 parent fa56cfe commit e2cc7e6

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

compiler/rustc_codegen_llvm/src/errors.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,12 @@ pub(crate) struct ParseTargetMachineConfig<'a>(pub LlvmError<'a>);
2424

2525
impl<G: EmissionGuarantee> Diagnostic<'_, G> for ParseTargetMachineConfig<'_> {
2626
fn into_diag(self, dcx: DiagCtxtHandle<'_>, level: Level) -> Diag<'_, G> {
27-
let diag: Diag<'_, G> = self.0.into_diag(dcx, level);
27+
// Reuse the formatted primary message from `LlvmError` without emitting it.
28+
let diag: Diag<'_, ()> = self.0.into_diag(dcx, level);
2829
let (message, _) = diag.messages.first().expect("`LlvmError` with no message");
29-
let message = format_diag_message(message, &diag.args);
30+
let message = format_diag_message(message, &diag.args).into_owned();
31+
diag.cancel();
32+
3033
Diag::new(
3134
dcx,
3235
level,

0 commit comments

Comments
 (0)