Commit Graph

224966 Commits

Author SHA1 Message Date
Jakob Degen
60cc72cf7b Don't inline functions with unsized args 2023-05-20 17:45:50 -07:00
liushuyu
343a0bf5c2
bootstrap: add test cases for beta revision extraction 2023-05-20 18:33:17 -06:00
liushuyu
50e38e928e Read beta version from the version file ...
... if building from a source tarball
2023-05-20 17:43:18 -06:00
Erik Desjardins
c4d69b717f make noalias-box-off filecheck more precise
The CHECK, -NOT, -SAME pattern ensures that the `CHECK-NOT: noalias`
is limited to only one line, and won't match unrelated lines further
down in the file.

Explicit drop call added to preserve the `foo` argument name, since
names of unused arguments are not preserved.
2023-05-20 19:41:28 -04:00
Erik Desjardins
644818351b ensure !Unpin types do not get noalias 2023-05-20 19:34:31 -04:00
Erik Desjardins
47444d7c25 improve code checking for drop_in_place lang item 2023-05-20 18:12:54 -04:00
Erik Desjardins
58c3999949 improve drop_in_place docs 2023-05-20 18:12:54 -04:00
Patrick Walton
b2ef9f7223 Add missing "unsafe" to fix doctest 2023-05-20 18:12:54 -04:00
Patrick Walton
2836e5541a Update documentation for drop_in_place() 2023-05-20 18:12:54 -04:00
Patrick Walton
21b8815b6c Apply noalias, nonnull, dereferenceable, and align attributes unconditionally.
We've done measurements with Miri and have determined that `noalias` shouldn't
break code. The requirements that allow us to add dereferenceable and align
have been long documented in the standard library documentation.
2023-05-20 18:12:54 -04:00
Patrick Walton
74dd3cb159 Fix noalias box test 2023-05-20 18:12:54 -04:00
Patrick Walton
f71741bac4 [rustc_ty_utils] Add the LLVM noalias parameter attribute to drop_in_place in certain cases.
LLVM can make use of the `noalias` parameter attribute on the parameter to
`drop_in_place` in areas like argument promotion. Because the Rust compiler
fully controls the code for `drop_in_place`, it can soundly deduce parameter
attributes on it. In the case of a value that has a programmer-defined Drop
implementation, we know that the first thing `drop_in_place` will do is pass a
pointer to the object to `Drop::drop`. `Drop::drop` takes `&mut`, so it must be
guaranteed that there are no pointers to the object upon entering that
function. Therefore, it should be safe to mark `noalias` there.

With this patch, we mark `noalias` only when the type is a value with a
programmer-defined Drop implementation. This is possibly overly conservative,
but I thought that proceeding cautiously was best in this instance.
2023-05-20 18:12:53 -04:00
bors
fe76e14955 Auto merge of #111646 - Voultapher:restore-branchless-code-gen-for-merge, r=cuviper
Use code with reliable branchless code-gen for slice::sort merge

The recent LLVM 16 update changes code-gen to be not branchless anymore, in the slice::sort implementation merge function. This improves performance by 30% for random patterns, restoring the performance to the state with LLVM 15.

Fixes #111559
2023-05-20 21:52:10 +00:00
bors
77f4f828a2 Auto merge of #111799 - flip1995:clippyup, r=Manishearth
Update Clippy

r? `@Manishearth`
2023-05-20 18:56:52 +00:00
bors
6bacf5a544 Auto merge of #111798 - GuillaumeGomez:rollup-t3bus8o, r=GuillaumeGomez
Rollup of 5 pull requests

Successful merges:

 - #111450 (Use `OpaqueTypeKey` in query response)
 - #111726 (Migrate GUI colors test to original CSS color format)
 - #111746 (Merge some query impl modules into one)
 - #111765 (Migrate GUI colors test to original CSS color format)
 - #111771 (add `--remote-time` flag to curl for bootstrap)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-05-20 16:07:54 +00:00
Philipp Krones
d780efc460
Update Cargo.lock 2023-05-20 15:39:35 +02:00
Philipp Krones
12cbb6ced8
Merge commit '435a8ad86c7a33bd7ffb91c59039943408d3b6aa' into clippyup 2023-05-20 15:39:26 +02:00
Guillaume Gomez
a6ebaf8425
Rollup merge of #111771 - liushuyu:ubuntu/rep-stage0, r=ozkanonur
add `--remote-time` flag to curl for bootstrap

This pull request sets the timestamp of the downloaded stage0 binary according to the server-reported timestamp (if possible).
This allows make_orig-dl_tarball.sh to be more reproducible on the filesystem.
2023-05-20 15:37:25 +02:00
Guillaume Gomez
0d8a2e58a3
Rollup merge of #111765 - GuillaumeGomez:migrate-gui-test-color, r=notriddle
Migrate GUI colors test to original CSS color format

Follow-up of https://github.com/rust-lang/rust/pull/111459.

r? `@notriddle`
2023-05-20 15:37:24 +02:00
Guillaume Gomez
3f9a7e7c81
Rollup merge of #111746 - Zoxc:query-impl-mod, r=cjgillot
Merge some query impl modules into one

This merges some modules in `rustc_query_impl` into one per query, analogous to https://github.com/rust-lang/rust/pull/111703.

r? `@cjgillot`
2023-05-20 15:37:24 +02:00
Guillaume Gomez
7597d572ed
Rollup merge of #111726 - GuillaumeGomez:gui-test-migrate-color, r=notriddle
Migrate GUI colors test to original CSS color format

Follow-up of https://github.com/rust-lang/rust/pull/111459.

r? ```@notriddle```
2023-05-20 15:37:23 +02:00
Guillaume Gomez
de074242eb
Rollup merge of #111450 - compiler-errors:opaque-ty-key, r=oli-obk
Use `OpaqueTypeKey` in query response

Makes it a bit clearer that at least one of the types being returned from a canonical query is an opaque.
2023-05-20 15:37:23 +02:00
Guillaume Gomez
8b7c8e1f82 Migrate GUI colors test to original CSS color format 2023-05-20 15:35:52 +02:00
bors
435a8ad86c Auto merge of #10802 - flip1995:rustup, r=flip1995
Rustup

r? `@ghost`

changelog: none
2023-05-20 13:33:20 +00:00
Philipp Krones
2e95a4fd4c
Bump nightly version -> 2023-05-20 2023-05-20 15:32:32 +02:00
Philipp Krones
96b32b1cb8
Merge remote-tracking branch 'upstream/master' into rustup 2023-05-20 15:32:20 +02:00
Lukas Markeffsky
7cdb23b98a don't skip inference for type in offset_of! 2023-05-20 15:20:27 +02:00
bors
4eb5225cdf Auto merge of #111413 - workingjubilee:bump-object-0-31-1, r=MarkSimulacrum
Bump object and thorin-dwp

Required to fix watchOS breakage.
2023-05-20 13:19:37 +00:00
bors
28dddc7257 Auto merge of #10795 - adrianEffe:fix/TyKind-enum, r=flip1995
Update URLs in Type Checking chapter

Updated links to `Adt`, `pat_ty` and `Tykind` in the "Type Checking" chapter of the book.

### Notes:
- For discussion about the whole project, please use the tracking issue for the project #10597  (It also contains a timeline, discussions, and more information).

changelog: Fix broken links in "Type Checking" chapter of the book
2023-05-20 13:00:53 +00:00
ozkanonur
f28a63bdf0 implement and use tools/rustdoc-gui-test in bootstrap 2023-05-20 14:42:12 +03:00
ozkanonur
02ea750f0b add compiletest headers to rustdoc-gui tests 2023-05-20 14:41:37 +03:00
ozkanonur
6a347322a9 derive Default trait for compiletest::common::Config 2023-05-20 14:40:46 +03:00
ozkanonur
c36b2092bb create new tool rustdoc-gui-test 2023-05-20 14:40:11 +03:00
bors
6d1bf733d6 Auto merge of #111778 - Dylan-DPC:rollup-107ig9h, r=Dylan-DPC
Rollup of 10 pull requests

Successful merges:

 - #111491 (Dont check `must_use` on nested `impl Future` from fn)
 - #111606 (very minor cleanups)
 - #111619 (Add timings for MIR passes to profiling report)
 - #111652 (Better diagnostic for `use Self::..`)
 - #111665 (Add more tests for the offset_of macro)
 - #111708 (Give a more useful location for where a span_bug was delayed)
 - #111715 (Fix doc comment for `ConstParamTy` derive)
 - #111723 (style: do not overwrite obligations)
 - #111743 (Improve cgu merging debug output)
 - #111762 (fix: emit error when fragment is `MethodReceiverExpr` and items is empty)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-05-20 10:30:30 +00:00
The 8472
b40896d17b optimize next_chunk impls for Filter and FilterMap 2023-05-20 11:29:34 +02:00
bors
25f084d5e0 Auto merge of #111596 - cjgillot:dominator-bucket, r=Mark-Simulacrum
Process current bucket instead of parent's bucket when starting loop for dominators.

The linked paper by Georgiadis suggests in §2.2.3 to process `bucket[w]` when beginning the loop, instead of `bucket[parent[w]]` when finishing it.

In the test case, we correctly computed `idom[2] = 0` and `sdom[3] = 1`, but the algorithm returned `idom[3] = 1`, instead of the correct value 0, because of the path 0-7-2-3.

This provoked LLVM ICE in https://github.com/rust-lang/rust/pull/111061#issuecomment-1546912112. LLVM checks that SSA assignments dominate uses using its own implementation of Lengauer-Tarjan, and saw case where rustc was breaking the dominance property.

r? `@Mark-Simulacrum`
2023-05-20 07:41:15 +00:00
Dylan DPC
94ca44a50a
Rollup merge of #111762 - bvanjoi:fix-111749, r=compiler-errors
fix: emit error when fragment is `MethodReceiverExpr` and items is empty

Fixes https://github.com/rust-lang/rust/issues/111749
2023-05-20 12:21:02 +05:30
Dylan DPC
9074769dc5
Rollup merge of #111743 - nnethercote:improve-cgu-merging-debug-output, r=lqd
Improve cgu merging debug output

r? ```@lqd```
2023-05-20 12:21:02 +05:30
Dylan DPC
c453b48fd8
Rollup merge of #111723 - lcnr:overwrite-obligations, r=compiler-errors
style: do not overwrite obligations

this looks sketchy and would break if the original obligations do not start out empty 😁
2023-05-20 12:21:01 +05:30
Dylan DPC
93c031f6e6
Rollup merge of #111715 - juntyr:const-param-ty-derive-fix, r=Nilstrieb
Fix doc comment for `ConstParamTy` derive

See https://github.com/rust-lang/rust/pull/111670#discussion_r1196453888

Thanks ````@Nilstrieb```` for the pointer :)
2023-05-20 12:21:01 +05:30
Dylan DPC
35bef062c7
Rollup merge of #111708 - jyn514:delay-span-bug-msg, r=compiler-errors
Give a more useful location for where a span_bug was delayed

Before:
```
   = note: delayed at    0: <rustc_errors::HandlerInner>::emit_diagnostic
                        at ./compiler/rustc_errors/src/lib.rs:1335:29
              1: <rustc_errors::Handler>::emit_diagnostic
                        at ./compiler/rustc_errors/src/lib.rs:1124:9
...
```

After:
```
   = note: delayed at compiler/rustc_parse/src/parser/diagnostics.rs:2158:28
              0: <rustc_errors::HandlerInner>::emit_diagnostic
                        at ./compiler/rustc_errors/src/lib.rs:1335:29
              1: <rustc_errors::Handler>::emit_diagnostic
                        at ./compiler/rustc_errors/src/lib.rs:1124:9
...
```

This both makes the relevant frame easier to find without having to dig through diagnostic internals, and avoids the weird-looking formatting for the first frame.

Found while working on https://github.com/rust-lang/rust/issues/111529.
2023-05-20 12:21:00 +05:30
Dylan DPC
e892e32df4
Rollup merge of #111665 - est31:offset_of_tests, r=WaffleLapkin
Add more tests for the offset_of macro

Implements what I [suggested in the tracking issue](https://github.com/rust-lang/rust/issues/106655#issuecomment-1535007205), plus some further improvements:

* ensuring that offset_of!(Self, ...) works iff inside an impl block
* ensuring that the output type is usize and doesn't coerce. this can be changed in the future, but if it is done, it should be a conscious decision
* improving the privacy checking test
* ensuring that generics don't let you escape the unsized check

r? `````@WaffleLapkin`````
2023-05-20 12:21:00 +05:30
Dylan DPC
13f3585dc6
Rollup merge of #111652 - clubby789:self-import-improvement, r=compiler-errors
Better diagnostic for `use Self::..`

Fixes #111627

cc `@petrochenkov,` you might have thoughts on a better way to handle this (https://github.com/rust-lang/rust/issues/63720#issuecomment-591597466)
2023-05-20 12:21:00 +05:30
Dylan DPC
1397827f25
Rollup merge of #111619 - cjgillot:profile-pass, r=WaffleLapkin
Add timings for MIR passes to profiling report

This will help identify which pass is responsible for a regression.
2023-05-20 12:20:59 +05:30
Dylan DPC
fa11c9e8ca
Rollup merge of #111606 - jyn514:nightly-diagnostics, r=lcnr
very minor cleanups

- add `must_use` to `early_error_no_abort`

  this was already being used at its only callsite, but this ensures that new code remembers to use it if it's called in the future. found this while investigating https://github.com/rust-lang/rust/issues/110090.

- remove outdated and incorrect comment in `builder.rs`. `doc_rust_lang_org_channel` doesn't exist in rustdoc, it gets it from an env var instead: b275d2c30b/src/librustdoc/clean/utils.rs (L569-L573)
2023-05-20 12:20:59 +05:30
Dylan DPC
2294d81fb3
Rollup merge of #111491 - compiler-errors:nested-fut-must-use, r=wesleywiser
Dont check `must_use` on nested `impl Future` from fn

Fixes (but does not close, per beta policy) #111484

Also fixes a `FIXME` left in the code about (presumably) false-positives on non-async `#[must_use] fn() -> impl Future` cases, though if that's not desirable to include in the beta backport then I can certainly revert it.

Beta nominating as it fixes a beta ICE.
2023-05-20 12:20:58 +05:30
bors
e86fd62b6b Auto merge of #111524 - scottmcm:escape-using-ascii, r=cuviper
`ascii::Char`-ify the escaping code in `core`

This means that `EscapeIterInner::as_str` no longer needs unsafe code, because the type system ensures the internal buffer is only ASCII, and thus valid UTF-8.

Come to think of it, this also gives it a (non-guaranteed) niche.

cc `@BurntSushi` as potentially interested
`ascii::Char` tracking issue: #110998
2023-05-20 04:43:17 +00:00
bors
940ffdfd1e Auto merge of #10763 - GuillaumeGomez:unique_cfg_condition, r=Jarcho
Add `MINIMAL_CFG_CONDITION` lint

I encountered a few cases where some code had:

```rust
#[cfg(any(unix))]
```

In this case, the `any` is useless. This lint checks this and also for the `all` condition.

```
changelog: [`unique_cfg_condition`]: Add new `UNIQUE_CFG_CONDITION` lint
```
2023-05-20 02:47:51 +00:00
Ximin Luo
0d7d2cae2f
Set the timestamp of downloaded stage0 files ...
... using server-reported timestamp.
This allows us to track changes to the downloaded artifact more easily
and in a more reproducible manner.

Co-authored-by: Zixing Liu <zixing.liu@canonical.com>
2023-05-19 18:49:50 -06:00
bors
7047d97e01 Auto merge of #111453 - scottmcm:constify-as-slice, r=Mark-Simulacrum
constify `slice_as_chunks` (unstable)

Tracking issue: #74985

Nothing complicated required; just adding `const` to the declarations.
2023-05-19 23:12:36 +00:00