Skip to content

Commit 6cdd42f

Browse files
committed
Auto merge of rust-lang#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 rust-lang#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. rust-lang#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.
2 parents 5438ee4 + db5ecd5 commit 6cdd42f

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

library/std/src/rt.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ fn lang_start<T: crate::process::Termination + 'static>(
6060
argc: isize,
6161
argv: *const *const u8,
6262
) -> isize {
63-
lang_start_internal(
63+
let Ok(v) = lang_start_internal(
6464
&move || crate::sys_common::backtrace::__rust_begin_short_backtrace(main).report(),
6565
argc,
6666
argv,
67-
)
68-
.into_ok()
67+
);
68+
v
6969
}

0 commit comments

Comments
 (0)