Auto merge of #88988 - Mark-Simulacrum:avoid-into-ok, r=nagisa
Avoid codegen for Result::into_ok in lang_start This extra codegen seems to be the cause for the regressions in max-rss on #86034. While LLVM will certainly optimize the dead code away, avoiding it's generation in the first place seems good, particularly when it is so simple. #86034 produced this [diff](https://gist.github.com/Mark-Simulacrum/95c7599883093af3b960c35ffadf4dab#file-86034-diff) for a simple `fn main() {}`. With this PR, that diff [becomes limited to just a few extra IR instructions](https://gist.github.com/Mark-Simulacrum/95c7599883093af3b960c35ffadf4dab#file-88988-from-pre-diff) -- no extra functions. Note that these are pre-optimization; LLVM surely will eliminate this during optimization. However, that optimization can end up generating more work and bump memory usage, and this eliminates that.
This commit is contained in:
commit
6cdd42f9f8
@ -60,10 +60,10 @@ fn lang_start<T: crate::process::Termination + 'static>(
|
|||||||
argc: isize,
|
argc: isize,
|
||||||
argv: *const *const u8,
|
argv: *const *const u8,
|
||||||
) -> isize {
|
) -> isize {
|
||||||
lang_start_internal(
|
let Ok(v) = lang_start_internal(
|
||||||
&move || crate::sys_common::backtrace::__rust_begin_short_backtrace(main).report(),
|
&move || crate::sys_common::backtrace::__rust_begin_short_backtrace(main).report(),
|
||||||
argc,
|
argc,
|
||||||
argv,
|
argv,
|
||||||
)
|
);
|
||||||
.into_ok()
|
v
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user