Commit graph

7388 commits

Author SHA1 Message Date
bors
06a24e98c6 Auto merge of #136586 - Kobzol:lto-rustdoc-fix-stage-1, r=onur-ozkan
Only apply LTO to rustdoc at stage 2

It doesn't make much sense at stage 1, and it was broken anyway. This was implemented in https://github.com/rust-lang/rust/pull/135832. The issue with LTO and stage 1 rustdoc was reported [here](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/x.20test.20with.20lto.20.3D.20.22thin.22.20fails.20to.20build.20rustdoc.3F).

r? `@onur-ozkan`
2025-02-11 18:12:45 +00:00
onur-ozkan
acc7ddfd53 rename is_host_target to is_builder_target
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-11 20:42:30 +03:00
onur-ozkan
61ba728b18 add coverage for Builder::is_host_target
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-11 16:39:02 +03:00
onur-ozkan
909d43b38c add Builder::is_host_target
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-11 16:35:43 +03:00
bit-aloo
24150eb3c0
add unit test to bootstrap:util:cache:tests 2025-02-11 10:33:05 +05:30
bit-aloo
8a0a4df0c6
Add docs to bootstrap:src:utils:cache 2025-02-11 09:37:59 +05:30
bors
6171d944ae Auto merge of #133092 - madsmtm:bootstrap-deployment-target, r=Mark-Simulacrum,jieyouxu
Always set the deployment target when building std

`cc` has [a bug/feature](https://github.com/rust-lang/cc-rs/issues/1171) (I guess depending on how you look at it) where the default deployment target is taken from the SDK instead of from `rustc`. This causes `compiler-builtins` to build `compiler-rt` with the wrong deployment target on iOS.

I've been meaning to change how `cc` works in this regard, but that's a lengthy process, so let's fix it in bootstrap for now.

The behaviour can be seen locally with `./x build library --set build.optimized-compiler-builtins=true` for various target triples, and then inspecting with `otool -l build/host/stage1/lib/rustlib/*/lib/libcompiler_builtins-*.rlib | rg 'minos|version'`. I have added a rmake test that ensures that we now have the same version everywhere.

Fixes https://github.com/rust-lang/rust/issues/128419
Fixes https://github.com/rust-lang/compiler-builtins/issues/650
Fixes https://github.com/rust-lang/rust/issues/136523
See also https://github.com/rust-lang/cargo/issues/13115, https://github.com/rust-lang/cc-rs/issues/1171, https://github.com/rust-lang/rust/issues/136113
See https://github.com/rust-lang/rust/pull/133092#issuecomment-2626206772 for a description of how the change works.

try-job: i686-gnu-1
try-job: i686-gnu-2
try-job: x86_64-apple-1
try-job: aarch64-apple
try-job: dist-apple-various
try-job: dist-aarch64-apple
try-job: dist-various-2
try-job: x86_64-fuchsia
2025-02-10 21:09:36 +00:00
Matthias Krüger
2becd0bfa9
Rollup merge of #136681 - onur-ozkan:132926, r=jieyouxu
resolve `llvm-config` path properly on cross builds

Fixes #132926

try-job: x86_64-mingw-2
2025-02-10 16:38:25 +01:00
Matthias Krüger
78f5bddd57
Rollup merge of #136419 - EnzymeAD:autodiff-tests, r=onur-ozkan,jieyouxu
adding autodiff tests

I'd like to get started with upstreaming some tests, even though I'm still waiting for an answer on how to best integrate the enzyme pass. Can we therefore temporarily support the -Z llvm-plugins here without too much effort? And in that case, how would that work? I saw you can do remapping, e.g. `rust-src-base`, but I don't think that will give me the path to libEnzyme.so. Do you have another suggestion?

Other than that this test simply checks that the derivative of `x*x` is `2.0 * x`, which in this case is computed as
`%0 = fadd fast double %x.0.val, %x.0.val`
(I'll add a few more tests and move it to an autodiff folder if we can use the -Z flag)

r? ``@jieyouxu``

Locally at least `-Zllvm-plugins=${PWD}/build/x86_64-unknown-linux-gnu/enzyme/build/Enzyme/libEnzyme-19.so` seems to work if I copy the command I get from x.py test and run it manually. However, running x.py test itself fails.

Tracking:

- https://github.com/rust-lang/rust/issues/124509

Zulip discussion: https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Enzyme.20build.20changes
2025-02-10 16:38:23 +01:00
onur-ozkan
e07e335a1c add coverage for llvm-config path resolution
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-10 15:36:34 +03:00
Mads Marquart
ea68a47103 bootstrap: Don't overwrite CFLAGS_* set in the environment 2025-02-10 11:02:58 +01:00
Guillaume Gomez
d40ed632b6 Fix bootstrap build_all test 2025-02-10 10:58:51 +01:00
Guillaume Gomez
615a9cd10a Ignore duplicated dep for literal-escaper 2025-02-10 10:38:22 +01:00
王宇逸
f94ada13de Add cygwin target.
Co-authored-by: Ookiineko <chiisaineko@protonmail.com>
Co-authored-by: nora <48135649+Noratrieb@users.noreply.github.com>
Co-authored-by: Jubilee <workingjubilee@gmail.com>
2025-02-10 17:13:15 +08:00
Jubilee
2a608f009e
Rollup merge of #136472 - jieyouxu:pass-stage, r=Mark-Simulacrum
[`compiletest`-related cleanups 2/7] Feed stage number to compiletest directly

Reference for overall changes: https://github.com/rust-lang/rust/pull/136437
Part **2** of **7** of the *`compiletest`-related cleanups* PR series.

### Summary

- Pass stage number via new `--stage` compiletest flag directly from bootstrap, instead of deriving that info in compiletest by doing gymnastics on `--stage-id`.
- Just a cleanup, should have no functional changes.

r? bootstrap
2025-02-10 00:51:52 -08:00
Manuel Drehwald
1221cff551 move second opt run to lto phase and cleanup code 2025-02-10 01:35:22 -05:00
bors
c03c38d5c2 Auto merge of #134740 - Flakebi:amdgpu-target, r=workingjubilee
Add amdgpu target

Add amdgpu target to rustc and enable the LLVM target.

Fix compiling `core` with the amdgpu:
The amdgpu backend makes heavy use of different address spaces. This
leads to situations, where a pointer in one addrspace needs to be casted
to a pointer in a different addrspace. `bitcast` is invalid for this
case, `addrspacecast` needs to be used.

Fix compilation failures that created bitcasts for such cases by
creating pointer casts (which creates an `addrspacecast` under the hood)
instead.

MCP: https://github.com/rust-lang/compiler-team/issues/823
Tracking issue: #135024
Kinda related to the original amdgpu tracking issue #51575 (though that one has been closed for a while).
2025-02-10 05:18:36 +00:00
bors
124cc92199 Auto merge of #136751 - bjorn3:update_rustfmt, r=Mark-Simulacrum
Update bootstrap compiler and rustfmt

The rustfmt version we previously used formats things differently from what the latest nightly rustfmt does. This causes issues for subtrees that get formatted both in-tree and in their own repo. Updating the rustfmt used in-tree solves those issues. Also bumped the bootstrap compiler as the stage0 update command always updates both at the same
time.
2025-02-09 15:44:16 +00:00
bors
a26e97be88 Auto merge of #136754 - Urgau:rollup-qlkhjqr, r=Urgau
Rollup of 5 pull requests

Successful merges:

 - #134679 (Windows: remove readonly files)
 - #136213 (Allow Rust to use a number of libc filesystem calls)
 - #136530 (Implement `x perf` directly in bootstrap)
 - #136601 (Detect (non-raw) borrows of null ZST pointers in CheckNull)
 - #136659 (Pick the max DWARF version when LTO'ing modules with different versions )

r? `@ghost`
`@rustbot` modify labels: rollup
2025-02-09 12:54:26 +00:00
Urgau
d024cef057
Rollup merge of #136530 - Kobzol:x-perf, r=onur-ozkan
Implement `x perf` directly in bootstrap

Discussed [here](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Turning.20.60x.20perf.60.20into.20a.20first.20class.20command).

Implementing the command directly in bootstrap let's us correctly build the compiler toolchain based on input arguments (such as include rustdoc in the toolchain [only] when needed), and it also makes the CLI interface nicer.

r? ``@onur-ozkan``
2025-02-09 00:37:27 +01:00
bjorn3
1fcae03369 Rustfmt 2025-02-08 22:12:13 +00:00
Matthias Krüger
2d87a07e9f
Rollup merge of #136626 - onur-ozkan:initial-rustdoc, r=jieyouxu
create `initial_rustdoc` field in `Build`

just a minor improvement
2025-02-08 21:37:25 +01:00
bors
8ad2c9724d Auto merge of #136728 - matthiaskrgr:rollup-x2qh9yt, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #136640 (Debuginfo for function ZSTs should have alignment of 8 bits, not 1 bit)
 - #136648 (Add a missing `//@ needs-symlink` to `tests/run-make/libs-through-symlinks`)
 - #136651 (Label mismatched parameters at the def site for foreign functions)
 - #136691 (Remove Linkage::Private and Linkage::Appending)
 - #136692 (add module level doc for bootstrap:utils:exec)
 - #136700 (i686-unknown-hurd-gnu: bump baseline CPU to Pentium 4)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-02-08 12:57:59 +00:00
onur-ozkan
4b8b18fd44 resolve llvm-config path properly on cross builds
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-08 06:04:57 +00:00
Manuel Drehwald
a6e55271fb fix autodiff perf by running the enzyme opt pass before autodiff 2025-02-07 20:56:17 -05:00
Matthias Krüger
688fc9bd21
Rollup merge of #136589 - GuillaumeGomez:enable-jump-to-def-compiler, r=oli-obk
Enable "jump to def" feature on rustc docs

This PR enables the rustdoc "jump to def" feature which is visible on the source code pages.

r? ``@oli-obk``
2025-02-07 21:31:01 +01:00
bit-aloo
08362f0283
add module level doc for bootstrap:util:exec 2025-02-07 20:32:16 +05:30
Manuel Drehwald
8f87e8095e get tests to work without -Z/-C flags 2025-02-07 01:58:48 -05:00
许杰友 Jieyou Xu (Joe)
51bc4c9509 bootstrap: reset some test suite metadata when starting a new test suite 2025-02-06 16:59:00 +08:00
onur-ozkan
d31dd48f59 create initial_rustdoc field in Build
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-06 11:58:50 +03:00
Jakub Beránek
cfa3518951 Only apply LTO to rustdoc at stage 2
It doesn't make much sense at stage 1, and it was broken anyway.
2025-02-05 22:21:22 +01:00
Guillaume Gomez
e58aa2105f Re-enable "jump to def" feature on rustc docs 2025-02-05 17:40:33 +01:00
Jakub Beránek
c73ed895c7 Remove the rustc-perf-wrapper tool 2025-02-05 15:33:40 +01:00
Jakub Beránek
d5de99a348 Build Rustdoc when a Doc benchmark is requested 2025-02-05 15:33:40 +01:00
Jakub Beránek
ca003ca18d Move x perf directly into bootstrap 2025-02-05 15:33:38 +01:00
Mads Marquart
d8e93c7e07 Rename [default|extra]_cflags -> cc_[|un]handled_clags
Makes it explicit that these are in relation to the cc-rs crate.
2025-02-05 13:59:51 +01:00
León Orell Valerian Liehr
9830837ab3
Rollup merge of #136392 - jieyouxu:wrap-tracing, r=onur-ozkan
bootstrap: add wrapper macros for `feature = "tracing"`-gated `tracing` macros

Follow-up to https://github.com/rust-lang/rust/pull/136091#discussion_r1930219425.

- Add wrapper macros for `error!`, `warn!`, `info!`, `debug!` and `trace!`, which `cfg(feature = "tracing")`-gates the underlying `tracing` macros. They expand to nothing if `"tracing"` feature is not enabled.
- This is not done for `span!` or `event!` because they can return span guards, and you can't really wrap that.
- This is also not possible for `tracing::instrument` attribute proc-macro unless you use another attribute proc-macro to wrap that.

It's not *great*, because `tracing::instrument` and `tracing::{span,event}` can't be wrapped this way.

Can test locally with:

```bash
$ BOOTSTRAP_TRACING=bootstrap=TRACE ./x check src/bootstrap/
```

r? ``@onur-ozkan`` (or reroll)
2025-02-05 05:03:04 +01:00
Jacob Pratt
648fd0e3ef
Rollup merge of #135844 - yaahc:tidy-feature-status-dump, r=jieyouxu
Add new tool for dumping feature status based on tidy

sequel to https://github.com/rust-lang/rust/pull/133514

meaning ...

supercedes https://github.com/rust-lang/rust/pull/133351

part of https://github.com/rust-lang/rust/issues/129485

r? `@jieyouxu`
cc `@estebank`
2025-02-04 05:36:51 -05:00
许杰友 Jieyou Xu (Joe)
53b8de1c9a bootstrap: add wrapper macros for tracing-gated tracing macros
- Add wrapper macros for `error!`, `warn!`, `info!`, `debug!` and
  `trace!`, which `cfg(feature = "tracing")`-gates the underlying
  `tracing` macros.
- This is not done for `span!` or `event!` because they can return span
  guards, and you can't really wrap that.
- This is also not possible for `tracing::instrument` attribute
  proc-macro unless you use another attribute proc-macro to wrap that.
2025-02-04 16:27:24 +08:00
Matthias Krüger
a24d859f19
Rollup merge of #136309 - onur-ozkan:133629, r=jieyouxu
set rustc dylib on manually constructed rustc command

Fixes #133629
2025-02-04 06:13:59 +01:00
Matthias Krüger
67e52b9f92
Rollup merge of #135836 - ferrocene:ja-gh135782-build-crt-only-for-musl, r=onur-ozkan
bootstrap: only build `crt{begin,end}.o` when compiling to MUSL

only MUSL needs those objects and trying to compile them to other targets, e.g. Windows or macOS, will produce C compilation errors

check the target before shelling out to the C compiler and tweak `make_run` to skip the actual C compilation when the target is not MUSL

fixes #135782

see the linked issue for additional context
2025-02-04 06:13:58 +01:00
许杰友 Jieyou Xu (Joe)
f65c6afcec
Rollup merge of #136467 - onur-ozkan:override-default-profile-on-tarballs, r=jieyouxu
override default config profile on tarballs

This is the same logic used in the Python script 613bdd4997/src/bootstrap/bootstrap.py (L1273-L1274)
2025-02-03 19:13:30 +08:00
许杰友 Jieyou Xu (Joe)
7d29a2e692 bootstrap: feed stage number via --stage to compiletest 2025-02-03 16:12:26 +08:00
onur-ozkan
8c5e6a20d0 override default config profile on tarballs
This is the same logic used in the Python script 613bdd4997/src/bootstrap/bootstrap.py (L1273-L1274)

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-03 06:53:58 +00:00
Jorge Aparicio
88260f4ba4 bootstrap: only build crt{begin,end}.o when compiling to MUSL
only MUSL needs those objects and trying to compile them to other
targets, e.g. Windows or macOS, will produce C compilation errors

check the target before shelling out to the C compiler and tweak
`make_run` to skip the actual C compilation when the target is not MUSL

fixes #135782
2025-01-31 14:34:08 +01:00
Flakebi
56795fb77a
Add amdgpu target
Add target and compile the amdgpu llvm backend.
2025-01-31 09:59:41 +01:00
Jacob Pratt
c19c4b91f5
Rollup merge of #133429 - EnzymeAD:autodiff-middle, r=oli-obk
Autodiff Upstreaming - rustc_codegen_ssa, rustc_middle

This PR should not be merged until the rustc_codegen_llvm part is merged.
I will also alter it a little based on what get's shaved off from the cg_llvm PR,
and address some of the feedback I received in the other PR (including cleanups).

I am putting it already up to
1) Discuss with `@jieyouxu` if there is more work needed to add tests to this and
2) Pray that there is someone reviewing who can tell me why some of my autodiff invocations get lost.

Re 1: My test require fat-lto. I also modify the compilation pipeline. So if there are any other llvm-ir tests in the same compilation unit then I will likely break them. Luckily there are two groups who currently have the same fat-lto requirement for their GPU code which I have for my autodiff code and both groups have some plans to enable support for thin-lto. Once either that work pans out, I'll copy it over for this feature. I will also work on not changing the optimization pipeline for functions not differentiated, but that will require some thoughts and engineering, so I think it would be good to be able to run the autodiff tests isolated from the rest for now. Can you guide me here please?
For context, here are some of my tests in the samples folder: https://github.com/EnzymeAD/rustbook

Re 2: This is a pretty serious issue, since it effectively prevents publishing libraries making use of autodiff: https://github.com/EnzymeAD/rust/issues/173. For some reason my dummy code persists till the end, so the code which calls autodiff, deletes the dummy, and inserts the code to compute the derivative never gets executed. To me it looks like the rustc_autodiff attribute just get's dropped, but I don't know WHY? Any help would be super appreciated, as rustc queries look a bit voodoo to me.

Tracking:

- https://github.com/rust-lang/rust/issues/124509

r? `@jieyouxu`
2025-01-31 00:26:30 -05:00
Mads Marquart
0a3fd1f062 Explain why MACOSX_STD_DEPLOYMENT_TARGET exist 2025-01-31 04:07:06 +01:00
Mads Marquart
9318fbb33a Always set the deployment target when building std 2025-01-31 04:07:06 +01:00
Mads Marquart
e790b92d72 Bootstrap: Don't duplicate cc-rs flags
Commands that end up invoking cc-rs, i.e. Cargo (through build scripts)
and cmake-rs don't need the CFLAGS from cc-rs itself, as they will just
end up as duplicates.

We do still choose to pass them in certain places, but now it's at least
clear which flags are default, and which flags are extra flags added on.
2025-01-31 04:07:04 +01:00