Commit Graph

267991 Commits

Author SHA1 Message Date
Joshua Wong
5e474f7d83 allocate before calling T::default in <Arc<T>>::default()
Same rationale as in the previous commit.
2024-10-10 09:50:35 -04:00
Joshua Wong
dd0620b867 allocate before calling T::default in <Box<T>>::default()
The `Box<T: Default>` impl currently calls `T::default()` before allocating
the `Box`.

Most `Default` impls are trivial, which should in theory allow
LLVM to construct `T: Default` directly in the `Box` allocation when calling
`<Box<T>>::default()`.

However, the allocation may fail, which necessitates calling `T's` destructor if it has one.
If the destructor is non-trivial, then LLVM has a hard time proving that it's
sound to elide, which makes it construct `T` on the stack first, and then copy it into the allocation.

Create an uninit `Box` first, and then write `T::default` into it, so that LLVM now only needs to prove
that the `T::default` can't panic, which should be trivial for most `Default` impls.
2024-10-10 09:49:24 -04:00
Joshua Wong
8a1462265f add initial tests for placement new changes 2024-10-10 09:47:26 -04:00
bors
a1eceec00b Auto merge of #131429 - Zalathar:needs-profiler-runtime, r=jieyouxu
Rename directive `needs-profiler-support` to `needs-profiler-runtime`

The rest of the compiler mostly refers to this as `profiler_runtime`, so having a directive named `needs-profiler-support` was causing a lot of confusion.

r? jieyouxu
2024-10-09 12:20:11 +00:00
Zalathar
7a0e8bd1fd No need to cache the profiler_runtime flag
This cache struct entry was a relic from when profiler availability was
communicated via an environment variable rather than a command-line flag.
2024-10-09 20:58:27 +11:00
Zalathar
8320a0116b Rename profiler_support to profiler_runtime throughout compiletest 2024-10-09 20:58:27 +11:00
Zalathar
622d5898c2 Rename directive needs-profiler-support to needs-profiler-runtime 2024-10-09 20:58:27 +11:00
bors
4203c68613 Auto merge of #131434 - onur-ozkan:fix-if-unchanged-test, r=onur-ozkan
fix `ci_rustc_if_unchanged_logic` test

Kind a typo from https://github.com/rust-lang/rust/pull/122709, which makes `ci_rustc_if_unchanged_logic` test to fail in any PR that has a change in "library" tree (e.g., https://github.com/rust-lang/rust/pull/131418#issuecomment-2400878904). This fixes that.

r? ghost
2024-10-09 05:31:49 +00:00
onur-ozkan
4474018500 fix ci_rustc_if_unchanged_logic test
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-10-09 07:45:48 +03:00
bors
883f9a2c8f Auto merge of #131421 - weihanglo:update-cargo, r=weihanglo
Update cargo

8 commits in ad074abe3a18ce8444c06f962ceecfd056acfc73..15fbd2f607d4defc87053b8b76bf5038f2483cf4
2024-10-04 18:18:15 +0000 to 2024-10-08 21:08:11 +0000
- initial version of checksum based freshness (rust-lang/cargo#14137)
- feat: Add custom completer for completing registry name (rust-lang/cargo#14656)
- Document build-plan as being deprecated (rust-lang/cargo#14657)
- fix(complete): Don't complete files for any value (rust-lang/cargo#14653)
- Add more SAT resolver tests (rust-lang/cargo#14614)
- fix: avoid inserting duplicate `dylib_path_envvar` when calling `cargo run` recursively (rust-lang/cargo#14464)
- chore(deps): bump gix-path from 0.10.9 to 0.10.11 (rust-lang/cargo#14489)
- improve error reporting when feature not found in `activated_features` (rust-lang/cargo#14647)

---

This also adds three license exceptions to Cargo.

* arrayref — BSD-2-Clause
* blake3 — CC0-1.0 OR Apache-2.0 OR Apache-2.0 WITH LLVM-exception
* constant_time_eq — CC0-1.0 OR MIT-0 OR Apache-2.0

These exceptions were added to rustc in rust-lang/rust#126930, so should be fine for Cargo as well.
2024-10-09 01:56:43 +00:00
Weihang Lo
7018a99172
Update cargo
This also adds three license exceptions to Cargo.

* arrayref — BSD-2-Clause
* blake3 — CC0-1.0 OR Apache-2.0 OR Apache-2.0 WITH LLVM-exception
* constant_time_eq — CC0-1.0 OR MIT-0 OR Apache-2.0

These exceptions were added to rustc in rust-lang/rust#126930,
so should be fine for Cargo as well.
2024-10-08 20:16:04 -04:00
bors
18deb53874 Auto merge of #131155 - jieyouxu:always-kill, r=onur-ozkan
Prevent building cargo from invalidating build cache of other tools due to conditionally applied `-Zon-broken-pipe=kill` via tracked `RUSTFLAGS`

This PR fixes #130980 where building cargo invalidated the tool build caches of other tools (such as rustdoc) because `-Zon-broken-pipe=kill` was conditionally passed via `RUSTFLAGS` for other tools *except* for cargo. The differing `RUSTFLAGS` triggered tool build cache invalidation as `RUSTFLAGS` is a tracked env var -- any changes in `RUSTFLAGS` requires a rebuild.

`-Zon-broken-pipe=kill` is load-bearing for rustc and rustdoc to not ICE on broken pipes due to usages of raw std `println!` that panics without the flag being set, which manifests in ICEs.

I can't say I like the changes here, but it is what it is...

See detailed discussions and history of `-Zon-broken-pipe=kill` usage in https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Internal.20lint.20for.20raw.20.60print!.60.20and.20.60println!.60.3F/near/474593815.

## Approach

This PR fixes the tool build cache invalidation by informing the `rustc` binary shim when to apply `-Zon-broken-pipe=kill` (i.e. when the rustc binary shim is not used to build cargo). This information is not communicated by `RUSTFLAGS`, which is an env var tracked by cargo, and instead uses an untracked env var `UNTRACKED_BROKEN_PIPE_FLAG` so we won't trigger tool build cache invalidation. We preserve bootstrap's behavior of not setting that flag for cargo by conditionally omitting setting `UNTRACKED_BROKEN_PIPE_FLAG` when building cargo.

Notably, the `-Zon-broken-pipe=kill` instance in 1e5719bdc4/src/bootstrap/src/core/build_steps/compile.rs (L1058) is not modified because that is used to build rustc only and not cargo itself.

Thanks to `@cuviper` for the idea!

## Testing

### Integration testing

This PR introduces a run-make test for rustc and rustdoc that checks that when they do not ICE/panic when they encounter a broken pipe of the stdout stream.

I checked this test will catch the broken pipe ICE regression for rustc on Linux (at least) by commenting out 1e5719bdc4/src/bootstrap/src/core/build_steps/compile.rs (L1058), and the test failed because rustc ICE'd.

### Manual testing

I have manually tried:

1. `./x clean && `./x test build --stage 1` -> `rustc +stage1 --print=sysroot | false`: no ICE.
2. `./x clean` -> `./x test run-make` twice: no stage 1 cargo rebuilds.
3. `./x clean` -> `./x build rustdoc` -> `rustdoc +stage1 --version | false`: no panics.
4. `./x test src/tools/cargo`: tests pass, notably `build::close_output` and `cargo_command::closed_output_ok` do not fail which would fail if cargo was built with `-Zon-broken-pipe=kill`.

## Related discussions

Thanks to everyone who helped!
- https://rust-lang.zulipchat.com/#narrow/stream/246057-t-cargo/topic/Applying.20.60-Zon-broken-pipe.3Dkill.60.20flags.20in.20bootstrap.3F
- https://rust-lang.zulipchat.com/#narrow/stream/326414-t-infra.2Fbootstrap/topic/Modifying.20run-make.20tests.20unnecessarily.20rebuild.20stage.201.20.2E.2E.2E
- https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Internal.20lint.20for.20raw.20.60print!.60.20and.20.60println!.60.3F

Fixes https://github.com/rust-lang/rust/issues/130980
Closes https://github.com/rust-lang/rust/issues/131059

---

try-job: aarch64-apple
try-job: x86_64-msvc
try-job: x86_64-mingw
2024-10-08 23:25:47 +00:00
bors
6f4ae0f345 Auto merge of #131412 - matthiaskrgr:rollup-478o6h6, r=matthiaskrgr
Rollup of 3 pull requests

Successful merges:

 - #131378 (CI: rfl: move job forward to Linux v6.12-rc2)
 - #131400 (Simplify the compiletest directives for ignoring coverage-test modes)
 - #131408 (Remove unneeded argument of `LinkCollector::verify_disambiguator`)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-10-08 20:45:49 +00:00
Matthias Krüger
cb252eef79
Rollup merge of #131408 - GuillaumeGomez:more-intra-doc-cleanup, r=notriddle
Remove unneeded argument of `LinkCollector::verify_disambiguator`

Still working on https://github.com/rust-lang/rust/pull/130278. ^^'

r? `@notriddle`
2024-10-08 20:13:13 +02:00
Matthias Krüger
bb7232ec1c
Rollup merge of #131400 - Zalathar:ignore-coverage, r=jieyouxu
Simplify the compiletest directives for ignoring coverage-test modes

Follow-up to #131346.

Given that these directives are now restricted to ignoring coverage-test modes only, we can drop the clunky `ignore-mode-*` naming convention, and just call them `ignore-coverage-map` and `ignore-coverage-run`.

r? jieyouxu
2024-10-08 20:13:12 +02:00
Matthias Krüger
7e9da42d53
Rollup merge of #131378 - ojeda:ci-rfl, r=lqd
CI: rfl: move job forward to Linux v6.12-rc2

r? `@Kobzol`

try-job: x86_64-rust-for-linux
2024-10-08 20:13:11 +02:00
bors
a49aefcd8b Auto merge of #122709 - onur-ozkan:use-precompiled-rustc-by-default, r=Mark-Simulacrum
use precompiled rustc for non-dist builders

Makes non-dist builders to use precompiled CI rustc by default if they are available for the target triple.

As we are going to make `rust.download-rustc=if-unchanged` default option with https://github.com/rust-lang/rust/pull/119899, we need to make sure `if-unchanged` logic never breaks and works as expected.

As an addition, this will significantly improve the build times on CI when there's no change on the compiler.

blocker for #119899

try-job: x86_64-gnu-nopt
try-job: aarch64-apple
2024-10-08 18:12:22 +00:00
onur-ozkan
4082f9f775 force download-rustc=if-unchanged for x86_64-gnu-tools runner
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-10-08 18:27:51 +03:00
onur-ozkan
abac4dc888 fix ci_rustc_if_unchanged_logic test
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-10-08 18:25:39 +03:00
onur-ozkan
8a5f418f14 handle CI rustc incompatible runners
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-10-08 18:25:35 +03:00
onur-ozkan
b0b4f4a1f3 fail on {dist, install} subcommand if download-rustc is enabled 2024-10-08 18:25:27 +03:00
onur-ozkan
a3bb170e37 disable download-rustc on x86_64-gnu-integration
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-10-08 18:25:22 +03:00
onur-ozkan
ee5f51af30 disable read-only mode in mingw-check image for merge pipeline
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-10-08 18:25:18 +03:00
onur-ozkan
1090d8920c improve ci-rustc finding logic
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-10-08 18:25:07 +03:00
onur-ozkan
eb5e6239aa use if-unchanged only when ci rustc is available
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-10-08 18:24:44 +03:00
onur-ozkan
b21949b962 make an explicit change on compiler then run bootstrap test
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-10-08 18:22:59 +03:00
onur-ozkan
bfcd00190d add test for ci rustc's if-unchanged logic
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-10-08 18:22:57 +03:00
onur-ozkan
9826e3ece3 disable CI rustc when not using CI LLVM
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-10-08 18:22:54 +03:00
onur-ozkan
11af16c983 use precompiled rustc for non-dist builders by default
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-10-08 18:22:51 +03:00
bors
10a9ee0607 Auto merge of #131404 - matthiaskrgr:rollup-z0dawoo, r=matthiaskrgr
Rollup of 3 pull requests

Successful merges:

 - #131348 (More `rustc_infer` cleanups)
 - #131392 (Drop compiletest legacy directive check)
 - #131395 (Add a mailmap entry for bjorn3)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-10-08 15:22:08 +00:00
Matthias Krüger
37a8ad8722
Rollup merge of #131395 - bjorn3:bjorn3_mailmap, r=lqd
Add a mailmap entry for bjorn3
2024-10-08 16:05:37 +02:00
Matthias Krüger
46f821a016
Rollup merge of #131392 - jieyouxu:remove-legacy-directive-check, r=Urgau
Drop compiletest legacy directive check

Sufficient time has passed (> 6 months) since we migrated from `//` to `//`@`,` so let's drop the
legacy directive check as it causes friction due to false positives.

As a side-effect, dropping the legacy directive check simplifies the directive scanning logic.

The legacy directive check was originally added to help people be aware of the migration.

Blocker for #131382 cc `@ehuss.`

Can be reviewed by any compiler/bootstrap reviewer.
2024-10-08 16:05:36 +02:00
Matthias Krüger
7cb47b505c
Rollup merge of #131348 - nnethercote:rustc_infer-more-cleanups, r=lcnr
More `rustc_infer` cleanups

A sequel to #131226.

r? `@lcnr`
2024-10-08 16:05:36 +02:00
Guillaume Gomez
c9b4d1bfb1 Remove unneeded argument of LinkCollector::verify_disambiguator 2024-10-08 15:13:26 +02:00
bors
68e4d9654e Auto merge of #131399 - lnicola:sync-from-ra, r=lnicola
Subtree update of `rust-analyzer`

r? `@ghost`
2024-10-08 12:43:18 +00:00
Zalathar
27583378d3 Simplify the directives for ignoring coverage-test modes 2024-10-08 22:51:53 +11:00
bors
84a16c49d4 Auto merge of #18267 - lnicola:sync-from-rust, r=lnicola
minor: Sync from downstream
2024-10-08 11:27:18 +00:00
Laurențiu Nicola
4316afffd9 Merge from rust-lang/rust 2024-10-08 14:25:39 +03:00
Laurențiu Nicola
537fb8d1bb Preparing for merge from rust-lang/rust 2024-10-08 14:25:24 +03:00
bors
76fc27a178 Auto merge of #18266 - lnicola:macos-13, r=lnicola
internal: Use macos-13 runners and bump MACOSX_DEPLOYMENT_TARGET to 13.0

As Monterey seems to be EOL.
2024-10-08 10:39:04 +00:00
bjorn3
aeaea1b4b1 Add a mailmap entry for bjorn3 2024-10-08 12:09:19 +02:00
bors
6a3c45e1c6 Auto merge of #131368 - GuillaumeGomez:rustdoc-dead-code, r=notriddle
[rustdoc] Remove intra-doc links dead code

While working on https://github.com/rust-lang/rust/pull/130278, I wondered what `resolve_display_text` was doing. I removed it and ran all rustdoc tests, and nothing failed. Are some intra-doc links tests missing or is it really dead code? Couldn't figure it out.

r? `@notriddle`
2024-10-08 10:07:44 +00:00
Laurențiu Nicola
ac5361f95f Use macos-13 runners and bump MACOSX_DEPLOYMENT_TARGET 2024-10-08 13:00:58 +03:00
许杰友 Jieyou Xu (Joe)
b81a3c8199 Drop compiletest legacy directive checks
Sufficient time has passed (> 6 months) since we migrated from `//` to
`//@`, so let's drop the legacy directive check as it causes friction
due to false positives.
2024-10-08 07:54:10 +00:00
bors
cf24c73141 Auto merge of #126733 - ZhuUx:llvm-19-adapt, r=Zalathar
[Coverage][MCDC] Adapt mcdc to llvm 19

Related issue: #126672

Also finish task 4 at #124144

[llvm #82448](https://github.com/llvm/llvm-project/pull/82448) has introduced some break changes into mcdc, causing incompatibility between llvm 18 and 19. This draft adapts to that change and gives up supporting for llvm-18.
2024-10-08 07:08:41 +00:00
Nicholas Nethercote
3b1eee7755 Remove unnecessary return keyword. 2024-10-08 16:28:58 +11:00
Nicholas Nethercote
1dac23f6fe Use Default more in InferCtxtInner. 2024-10-08 16:28:58 +11:00
Nicholas Nethercote
4df21f2ca0 Downgrade a &mut self to &self. 2024-10-08 16:28:58 +11:00
Nicholas Nethercote
8b05df44f9 Remove Deref/DerefMut impls for RegionConstraintCollector.
`Deref`/`DerefMut` can be useful, but they can also obfuscate. I don't
think they're worth it for `RegionConstraintCollector`. They're also not
present on the similar types `OpaqueTypeTable` and `TypeVariableTable`.
2024-10-08 16:28:58 +11:00
Nicholas Nethercote
e8a0bd6549 Remove unnecessary lifetime from LeakCheck.
`LeakCheck` can own `mini_graph` and `rcc` instead of holding references
to them. This requires inlining `assign_scc_value` to avoid a borrowck
error, but that's fine because it has a single call site.
2024-10-08 16:28:58 +11:00