Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #3045
This PR adds a new build setting
//rust/settings:lto=(off|thin|fat)
which changes how we specify the following flags:lto
embed-bitcode
linker-plugin-lto
The way we invoke the flags was based on how Cargo does it today (code) and based on suggestions from the Rust docs.
When LTO is not enabled, we will specify
-Cembed-bitcode=no
which tellsrustc
to skip embedding LLVM bitcode and should speed up builds. Similarly when LTO is enabled we specify-Clinker-plugin-lto
which will causerustc
to skip generating objects files entirely, and instead replace them with LLVM bitcode*.*only when building an
rlib
, when building other crate types we continue generating object files.I added unit tests to make sure we pass the flags correctly, as well as some docs describing the new setting. Please let me know if I should add more!