about summary refs log tree commit diff
path: root/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-03-26 05:55:32 +0000
committerbors <bors@rust-lang.org>2023-03-26 05:55:32 +0000
commit2420bd34ba68a625840022de2a56aec228500359 (patch)
tree6ebb3558a94bed0ee8332e293b882927d8abd454 /compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
parent48ae1b335f91ff137f955005f015b83fa24b8044 (diff)
parentb93275198430e846715d0861111a55b672ca47e4 (diff)
downloadrust-2420bd34ba68a625840022de2a56aec228500359.tar.gz
rust-2420bd34ba68a625840022de2a56aec228500359.zip
Auto merge of #106428 - saethlin:inline-diverging-functions, r=cjgillot
Permit the MIR inliner to inline diverging functions

This heuristic prevents inlining of `hint::unreachable_unchecked`, which in turn makes `Option/Result::unwrap_unchecked` a bad inlining candidate. I looked through the changes to `core`, `alloc`, `std`, and `hashbrown` by hand and they all seem reasonable. Let's see how this looks in perf...

---

Based on rustc-perf it looks like this regresses ctfe-stress, and the cachegrind diff indicates that this regression is in `InterpCx::statement`. I don't know how to do any deeper analysis because that function is _enormous_ in the try toolchain, which has no debuginfo in it. And a local build produces significantly different codegen for that function, even with LTO.
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp')
0 files changed, 0 insertions, 0 deletions