Allow using self-contained LLD in bootstrap by Kobzol · Pull Request #135001 · rust-lang/rust (original) (raw)
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
[ Show hidden characters]({{ revealButtonHref }})
…ntained"` is used
Before, we just used the global lld
anyway.
Not all targets support these flags, so we cannot just pass them to the tests unconditionally. Before, we were using a linker arg (-Clink-arg=-fuse-ld=lld
), which circumvented this in a hacky way.
rustbot added S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)
labels
bors added S-waiting-on-bors
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
and removed S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
labels
bors added a commit to rust-lang-ci/rust that referenced this pull request
…iaskrgr
Rollup of 7 pull requests
Successful merges:
- rust-lang#133964 (core: implement
bool::select_unpredictable
) - rust-lang#135001 (Allow using self-contained LLD in bootstrap)
- rust-lang#135055 (Report impl method has stricter requirements even when RPITIT inference gets in the way)
- rust-lang#135064 (const-in-pattern: test that the PartialEq impl does not need to be const)
- rust-lang#135066 (bootstrap: support
./x check run-make-support
) - rust-lang#135069 (remove unused function params)
- rust-lang#135084 (Update carrying_mul_add test to tolerate
nuw
)
r? @ghost
@rustbot
modify labels: rollup
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request
Rollup merge of rust-lang#135001 - Kobzol:bootstrap-mcp-510, r=onur-ozkan
Allow using self-contained LLD in bootstrap
In rust-lang#116278, I added a "self-contained"
mode to the rust.use-lld
bootstrap option, which was designed for using the built-in LLD for linking compiler artifacts. However, this was later reverted in rust-lang#118810.
This PR brings the old logic back, which switches LLD in bootstrap from -fuse-ld=lld
to MCP510 way of passing linker flags to enable LLD (both external and self-contained). So this does two changes:
- Goes from
-fuse-ld=lld
to MCP510 - Actually makes it possible to use the self-contained LLD to compile compiler artifacts
Regarding the second commit: Since rust-lang#86113, we have been passing -fuse-ld=lld
as a target flag to all tests when use-lld = true
is enabled. This kind of worked for all tests, since it was just a linker argument, which has bypassed any compiler checks, and probably resulted only in some warning if the given target linker didn't actually support LLD. However, after the first commit, some tests actually start failing with this approach:
error: linker flavor `gnu-lld-cc` is incompatible with the current target
|
= note: compatible flavors are: llbc, ptx
So the second commit removes the passing of LLD flags as target flags to tests. I don't think that it's a good idea to pass specific compiler flags to all tests unconditionally, tbh. The doctest command from rust-lang#86113 doesn't go through compiletest anymore, and doctests should be quite a lot faster since rust-lang#126245 in general.
CC @the8472
If someone has a beefy machine, it would be nice to test whether this doesn't regress test execution speed. How to do that:
- Enable
rust.use-lld = true
andrust.lld = true
inconfig.toml
- Benchmark
./x test tests/ui --force-rerun
betweenmaster
and this PR
Once this is tested in the wild, I would like to make the self-contained LLD the default in CI, hopefully to make CI builds faster.
r? @onur-ozkan
Kobzol deleted the bootstrap-mcp-510 branch
bors added S-waiting-on-author
Status: This is awaiting some action (such as code changes or more information) from the author.
and removed S-waiting-on-bors
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
labels
jieyouxu added merged-by-bors
This PR was explicitly merged by bors.
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
and removed S-waiting-on-author
Status: This is awaiting some action (such as code changes or more information) from the author.
labels
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request
…trochenkov
Use target-agnostic LLD flags in bootstrap for use-lld
Before, I hardcoded LLD flags that pretty much only worked on GNU. The right way is to use -Zlinker-features
instead though.
I think that this should also make this work on Windows mingw, and thus @petrochenkov's
workaround is no longer necessary.
Fixes: rust-lang#139372 Closes: rust-lang#139375
r? @lqd
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request
Rollup merge of rust-lang#139378 - Kobzol:bootstrap-use-lld-fix, r=petrochenkov
Use target-agnostic LLD flags in bootstrap for use-lld
Before, I hardcoded LLD flags that pretty much only worked on GNU. The right way is to use -Zlinker-features
instead though.
I think that this should also make this work on Windows mingw, and thus @petrochenkov's
workaround is no longer necessary.
Fixes: rust-lang#139372 Closes: rust-lang#139375
r? @lqd