Auto merge of #122671 - Mark-Simulacrum:const-panic-msg, r=Nilstrieb
Codegen const panic messages as function calls This skips emitting extra arguments at every callsite (of which there can be many). For a librustc_driver build with overflow checks enabled, this cuts 0.7MB from the resulting shared library (see [perf]). A sample improvement from nightly: ``` leaq str.0(%rip), %rdi leaq .Lalloc_d6aeb8e2aa19de39a7f0e861c998af13(%rip), %rdx movl $25, %esi callq *_ZN4core9panicking5panic17h17cabb89c5bcc999E@GOTPCREL(%rip) ``` to this PR: ``` leaq .Lalloc_d6aeb8e2aa19de39a7f0e861c998af13(%rip), %rdi callq *_RNvNtNtCsduqIKoij8JB_4core9panicking11panic_const23panic_const_div_by_zero@GOTPCREL(%rip) ``` [perf]: https://perf.rust-lang.org/compare.html?start=a7e4de13c1785819f4d61da41f6704ed69d5f203&end=64fbb4f0b2d621ff46d559d1e9f5ad89a8d7789b&stat=instructions:u
This commit is contained in:
commit
db2f9759f4
12 changed files with 253 additions and 61 deletions
|
@ -971,16 +971,17 @@ impl<'a, 'tcx> MirVisitor<'tcx> for MirUsedCollector<'a, 'tcx> {
|
|||
}
|
||||
}
|
||||
}
|
||||
mir::TerminatorKind::Assert { ref msg, .. } => {
|
||||
let lang_item = match &**msg {
|
||||
mir::AssertKind::BoundsCheck { .. } => LangItem::PanicBoundsCheck,
|
||||
mir::AssertKind::MisalignedPointerDereference { .. } => {
|
||||
LangItem::PanicMisalignedPointerDereference
|
||||
}
|
||||
_ => LangItem::Panic,
|
||||
};
|
||||
push_mono_lang_item(self, lang_item);
|
||||
}
|
||||
mir::TerminatorKind::Assert { ref msg, .. } => match &**msg {
|
||||
mir::AssertKind::BoundsCheck { .. } => {
|
||||
push_mono_lang_item(self, LangItem::PanicBoundsCheck);
|
||||
}
|
||||
mir::AssertKind::MisalignedPointerDereference { .. } => {
|
||||
push_mono_lang_item(self, LangItem::PanicMisalignedPointerDereference);
|
||||
}
|
||||
_ => {
|
||||
push_mono_lang_item(self, msg.panic_function());
|
||||
}
|
||||
},
|
||||
mir::TerminatorKind::UnwindTerminate(reason) => {
|
||||
push_mono_lang_item(self, reason.lang_item());
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue