Skip to content

Commit

Permalink
Auto merge of rust-lang#88988 - Mark-Simulacrum:avoid-into-ok, r=nagisa
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
bors committed Sep 18, 2021
2 parents 5438ee4 + db5ecd5 commit 6cdd42f
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions library/std/src/rt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@ fn lang_start<T: crate::process::Termination + 'static>(
argc: isize,
argv: *const *const u8,
) -> isize {
lang_start_internal(
let Ok(v) = lang_start_internal(
&move || crate::sys_common::backtrace::__rust_begin_short_backtrace(main).report(),
argc,
argv,
)
.into_ok()
);
v
}

0 comments on commit 6cdd42f

Please sign in to comment.