]> git.lizzy.rs Git - rust.git/log
rust.git
23 months agoRollup merge of #98211 - devnexen:get_path_freebsd, r=Mark-Simulacrum
Yuki Okushi [Tue, 26 Jul 2022 04:12:18 +0000 (13:12 +0900)]
Rollup merge of #98211 - devnexen:get_path_freebsd, r=Mark-Simulacrum

Implement `fs::get_path` for FreeBSD.

Using `F_KINFO` fcntl flag, the kf_structsize field
needs to be set beforehand for that effect.

23 months agoAuto merge of #99735 - JohnTitor:rollup-d93jyr2, r=JohnTitor
bors [Mon, 25 Jul 2022 22:57:23 +0000 (22:57 +0000)]
Auto merge of #99735 - JohnTitor:rollup-d93jyr2, r=JohnTitor

Rollup of 9 pull requests

Successful merges:

 - #92390 (Constify a few `(Partial)Ord` impls)
 - #97077 (Simplify some code that depend on Deref)
 - #98710 (correct the output of a `capacity` method example)
 - #99084 (clarify how write_bytes can lead to UB due to invalid values)
 - #99178 (Lighten up const_prop_lint, reusing const_prop)
 - #99673 (don't ICE on invalid dyn calls)
 - #99703 (Expose size_hint() for TokenStream's iterator)
 - #99709 (`Inherited` always has `TypeckResults` available)
 - #99713 (Fix sidebar background)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

23 months agoImplement `fs::get_path` for FreeBSD.
David CARLIER [Fri, 17 Jun 2022 19:31:59 +0000 (20:31 +0100)]
Implement `fs::get_path` for FreeBSD.

Using `F_KINFO` fcntl flag, the kf_structsize field
needs to be set beforehand for that effect.

23 months agoRollup merge of #99713 - GuillaumeGomez:fix-sidebar-background, r=notriddle
Yuki Okushi [Mon, 25 Jul 2022 22:14:52 +0000 (07:14 +0900)]
Rollup merge of #99713 - GuillaumeGomez:fix-sidebar-background, r=notriddle

Fix sidebar background

Fixes #99691.

cc `@jsha`
r? `@notriddle`

23 months agoRollup merge of #99709 - lcnr:rm-MaybeTypeckResults, r=compiler-errors
Yuki Okushi [Mon, 25 Jul 2022 22:14:51 +0000 (07:14 +0900)]
Rollup merge of #99709 - lcnr:rm-MaybeTypeckResults, r=compiler-errors

`Inherited` always has `TypeckResults` available

23 months agoRollup merge of #99703 - dtolnay:tokenstreamsizehint, r=petrochenkov
Yuki Okushi [Mon, 25 Jul 2022 22:14:50 +0000 (07:14 +0900)]
Rollup merge of #99703 - dtolnay:tokenstreamsizehint, r=petrochenkov

Expose size_hint() for TokenStream's iterator

The iterator for `proc_macro::TokenStream` is a wrapper around a `Vec` iterator:

https://github.com/rust-lang/rust/blob/babff2211e3ae9ef52852dc1b01f3eacdd94c12e/library/proc_macro/src/lib.rs#L363-L371

so it can cheaply provide a perfectly precise size hint, with just a pointer subtraction:

https://github.com/rust-lang/rust/blob/babff2211e3ae9ef52852dc1b01f3eacdd94c12e/library/alloc/src/vec/into_iter.rs#L170-L177

I need the size hint in syn (https://github.com/dtolnay/syn/blob/1.0.98/src/buffer.rs) to reduce allocations when converting TokenStream into syn's internal TokenBuffer representation.

Aside from `size_hint`, the other non-default methods in `std::vec::IntoIter`'s `Iterator` impl are `advance_by`, `count`, and `__iterator_get_unchecked`. I've included `count` in this PR since it is trivial. I did not include `__iterator_get_unchecked` because it is spoopy and I did not feel like dealing with that. Lastly, I did not include `advance_by` because that requires `feature(iter_advance_by)` (https://github.com/rust-lang/rust/issues/77404) and I noticed this comment at the top of libproc_macro:

https://github.com/rust-lang/rust/blob/babff2211e3ae9ef52852dc1b01f3eacdd94c12e/library/proc_macro/src/lib.rs#L20-L22

23 months agoRollup merge of #99673 - RalfJung:interpret-invalid-dyn, r=oli-obk
Yuki Okushi [Mon, 25 Jul 2022 22:14:49 +0000 (07:14 +0900)]
Rollup merge of #99673 - RalfJung:interpret-invalid-dyn, r=oli-obk

don't ICE on invalid dyn calls

Due to https://github.com/rust-lang/rust/issues/50781 this is actually reachable.
Fixes https://github.com/rust-lang/miri/issues/2432

r? ``@oli-obk``

23 months agoRollup merge of #99178 - Dajamante:clean_up, r=oli-obk
Yuki Okushi [Mon, 25 Jul 2022 22:14:48 +0000 (07:14 +0900)]
Rollup merge of #99178 - Dajamante:clean_up, r=oli-obk

Lighten up const_prop_lint, reusing const_prop

r? `@oli-obk`

23 months agoRollup merge of #99084 - RalfJung:write_bytes, r=thomcc
Yuki Okushi [Mon, 25 Jul 2022 22:14:46 +0000 (07:14 +0900)]
Rollup merge of #99084 - RalfJung:write_bytes, r=thomcc

clarify how write_bytes can lead to UB due to invalid values

Fixes https://github.com/rust-lang/unsafe-code-guidelines/issues/330

Cc ``@5225225``

23 months agoRollup merge of #98710 - mojave2:string, r=JohnTitor
Yuki Okushi [Mon, 25 Jul 2022 22:14:45 +0000 (07:14 +0900)]
Rollup merge of #98710 - mojave2:string, r=JohnTitor

correct the output of a `capacity` method example

The output of this example in std::alloc is different from which shown in the comment. I have tested it on both Linux and Windows.

23 months agoRollup merge of #97077 - ouz-a:Optimize-backend, r=oli-obk
Yuki Okushi [Mon, 25 Jul 2022 22:14:44 +0000 (07:14 +0900)]
Rollup merge of #97077 - ouz-a:Optimize-backend, r=oli-obk

Simplify some code that depend on Deref

Now that we can assume #97025 works, it's safe to expect Deref is always in the first place of projections. With this, I was able to simplify some code that depended on Deref's place in projections. When we are able to move Derefer before `ElaborateDrops` successfully we will be able to optimize more places.

r? `@oli-obk`

23 months agoRollup merge of #92390 - fee1-dead-contrib:const_cmp, r=oli-obk
Yuki Okushi [Mon, 25 Jul 2022 22:14:43 +0000 (07:14 +0900)]
Rollup merge of #92390 - fee1-dead-contrib:const_cmp, r=oli-obk

Constify a few `(Partial)Ord` impls

Only a few `impl`s are constified for now, as #92257 has not landed in the bootstrap compiler yet and quite a few impls would need that fix.

This unblocks #92228, which unblocks marking iterator methods as `default_method_body_is_const`.

23 months agoAuto merge of #97313 - cjgillot:ast-lifetimes-anon, r=petrochenkov
bors [Mon, 25 Jul 2022 20:02:55 +0000 (20:02 +0000)]
Auto merge of #97313 - cjgillot:ast-lifetimes-anon, r=petrochenkov

Resolve function lifetime elision on the AST

~Based on https://github.com/rust-lang/rust/pull/97720~

Lifetime elision for functions is purely syntactic in nature, so can be resolved on the AST.
This PR replicates the elision logic and diagnostics on the AST, and replaces HIR-based resolution by a `delay_span_bug`.

This refactor allows for more consistent diagnostics, which don't have to guess the original code from HIR.

r? `@petrochenkov`

23 months agoClippy fallout.
Camille GILLOT [Mon, 6 Jun 2022 18:26:41 +0000 (20:26 +0200)]
Clippy fallout.

23 months agoUpdate file description.
Camille GILLOT [Fri, 22 Jul 2022 18:15:14 +0000 (20:15 +0200)]
Update file description.

23 months agoReport elision failures on the AST.
Camille GILLOT [Sun, 5 Jun 2022 16:33:09 +0000 (18:33 +0200)]
Report elision failures on the AST.

23 months agoAuto merge of #99722 - RalfJung:miri, r=RalfJung
bors [Mon, 25 Jul 2022 16:48:01 +0000 (16:48 +0000)]
Auto merge of #99722 - RalfJung:miri, r=RalfJung

update Miri

Fixes https://github.com/rust-lang/rust/issues/99664
r? `@ghost`

23 months agoupdate Miri
Ralf Jung [Mon, 25 Jul 2022 15:23:59 +0000 (11:23 -0400)]
update Miri

23 months agoAuto merge of #85673 - csmoe:export-exe-sym, r=bjorn3
bors [Mon, 25 Jul 2022 14:04:40 +0000 (14:04 +0000)]
Auto merge of #85673 - csmoe:export-exe-sym, r=bjorn3

RFC-2841: add codegen flag export symbols from executable

Closes #84161
r? `@nikomatsakis` `@Mark-Simulacrum`

23 months agoremoved CanConstProp + Visitor
Aïssata [Mon, 25 Jul 2022 13:54:49 +0000 (13:54 +0000)]
removed CanConstProp + Visitor

23 months agoLighten up const_prop_lint, reusing const_prop
Aïssata [Tue, 12 Jul 2022 12:17:58 +0000 (12:17 +0000)]
Lighten up const_prop_lint, reusing const_prop

23 months agoAdd GUI test to prevent sidebar background regression
Guillaume Gomez [Mon, 25 Jul 2022 12:35:06 +0000 (14:35 +0200)]
Add GUI test to prevent sidebar background regression

23 months agoFix sidebar background-color on mobile
Guillaume Gomez [Mon, 25 Jul 2022 12:19:26 +0000 (14:19 +0200)]
Fix sidebar background-color on mobile

23 months ago`Inherited` always has `TypeckResults` available
lcnr [Mon, 25 Jul 2022 11:11:07 +0000 (13:11 +0200)]
`Inherited` always has `TypeckResults` available

23 months agoAuto merge of #99707 - JohnTitor:rollup-74rb8vq, r=JohnTitor
bors [Mon, 25 Jul 2022 10:33:32 +0000 (10:33 +0000)]
Auto merge of #99707 - JohnTitor:rollup-74rb8vq, r=JohnTitor

Rollup of 7 pull requests

Successful merges:

 - #95040 (protect `std::io::Take::limit` from overflow in `read`)
 - #95916 (kmc-solid: Use `libc::abort` to abort a program)
 - #99494 (Use non-relocatable code in nofile-limit.rs test)
 - #99581 (Improve error messages involving `derive` and `packed`.)
 - #99643 (Add `sign-ext` target feature to the WASM target)
 - #99659 (Use `VecMap::get` in `ConstraintLocator::check`)
 - #99690 (add miri-track-caller to more intrinsic-exposing methods)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

23 months agoRollup merge of #99690 - RalfJung:miri-track-caller, r=Mark-Simulacrum
Yuki Okushi [Mon, 25 Jul 2022 09:46:55 +0000 (18:46 +0900)]
Rollup merge of #99690 - RalfJung:miri-track-caller, r=Mark-Simulacrum

add miri-track-caller to more intrinsic-exposing methods

Follow-up to https://github.com/rust-lang/rust/pull/98674: I went through the Miri test suite to find more functions that would benefit from Miri backtrace pruning, and this is what I found.

Basically anything that just exposes a potentially-UB intrinsic to the user should get this treatment.

23 months agoRollup merge of #99659 - compiler-errors:opaque-type-nit, r=oli-obk
Yuki Okushi [Mon, 25 Jul 2022 09:46:54 +0000 (18:46 +0900)]
Rollup merge of #99659 - compiler-errors:opaque-type-nit, r=oli-obk

Use `VecMap::get` in `ConstraintLocator::check`

Also rename the `def_id` param to `item_def_id` because that's easily confused with `self.def_id` (which is the opaque ty did).

23 months agoRollup merge of #99643 - daxpedda:sign-ext-wasm, r=oli-obk
Yuki Okushi [Mon, 25 Jul 2022 09:46:52 +0000 (18:46 +0900)]
Rollup merge of #99643 - daxpedda:sign-ext-wasm, r=oli-obk

Add `sign-ext` target feature to the WASM target

Some target features are still missing from that list.
See #97808 for basically the same PR by `@alexcrichton.`

Related issue: #96472.
PR introducing this issue: #87402.

23 months agoRollup merge of #99581 - nnethercote:improve-derive-packed-errors, r=estebank
Yuki Okushi [Mon, 25 Jul 2022 09:46:51 +0000 (18:46 +0900)]
Rollup merge of #99581 - nnethercote:improve-derive-packed-errors, r=estebank

Improve error messages involving `derive` and `packed`.

There are two errors involving `derive` and `packed`.

```
`#[derive]` can't be derived on a `#[repr(packed)]` struct with type or const parameters
`#[derive]` can't be derived on a `#[repr(packed)]` struct that does not derive Copy
```
The second one overstates things. It is possible to use derive on a
repr(packed) struct that doesn't derive Copy in two cases.
- If all the fields within the struct meet the required alignment: 1 for
  `repr(packed)`, or `N` for `repr(packed(N))`.
- If `Default` is the only trait derived.

This commit improves things in a few ways.
- Changes the errors to say `this trait can't be derived on this ...`.
  This is more accurate, because it's just *this* trait and *this*
  packed struct that are a problem, not *all* derived traits on *all*
  packed structs.
- Adds more details to the "ERROR" lines in the test case, enough to
  distinguish between the two error messages.
- Adds more cases to the test case that don't cause errors, e.g. `Default`
  derives.
- Uses a wider variety of builtin traits in the test case, for better coverage.

r? `@estebank`

23 months agoRollup merge of #99494 - tmiasko:no-pie, r=Mark-Simulacrum
Yuki Okushi [Mon, 25 Jul 2022 09:46:50 +0000 (18:46 +0900)]
Rollup merge of #99494 - tmiasko:no-pie, r=Mark-Simulacrum

Use non-relocatable code in nofile-limit.rs test

To avoid using static-pie which is not essential to the test but which
was reported to cause problems on Void Linux where glibc is build
without support for static-pie.

23 months agoRollup merge of #95916 - solid-rs:feat-kmc-solid-abort, r=Mark-Simulacrum
Yuki Okushi [Mon, 25 Jul 2022 09:46:48 +0000 (18:46 +0900)]
Rollup merge of #95916 - solid-rs:feat-kmc-solid-abort, r=Mark-Simulacrum

kmc-solid: Use `libc::abort` to abort a program

This PR updates the target-specific abort subroutine for the [`*-kmc-solid_*`](https://doc.rust-lang.org/nightly/rustc/platform-support/kmc-solid.html) Tier 3 targets.

The current implementation uses a `hlt` instruction, which is the most direct way to notify a connected debugger but is not the most flexible way. This PR changes it to call the `abort` libc function, making it possible for a system designer to override its behavior as they see fit.

23 months agoRollup merge of #95040 - frank-king:fix/94981, r=Mark-Simulacrum
Yuki Okushi [Mon, 25 Jul 2022 09:46:47 +0000 (18:46 +0900)]
Rollup merge of #95040 - frank-king:fix/94981, r=Mark-Simulacrum

protect `std::io::Take::limit` from overflow in `read`

Resolves #94981

23 months agoAuto merge of #99600 - tmiasko:subst-folder, r=petrochenkov
bors [Mon, 25 Jul 2022 07:52:41 +0000 (07:52 +0000)]
Auto merge of #99600 - tmiasko:subst-folder, r=petrochenkov

Tweak `SubstFolder` implementation

23 months agoAuto merge of #98770 - klensy:no-string-dupes-ugly, r=cjgillot
bors [Mon, 25 Jul 2022 05:27:17 +0000 (05:27 +0000)]
Auto merge of #98770 - klensy:no-string-dupes-ugly, r=cjgillot

rmeta: avoid embedding `StabilityLevel::Unstable` reason multiple times into .rmeta\.rlib files

Avoids bloating size of some rmeta\rlib files by not placing default string for `StabilityLevel::Unstable` reason multiple times, affects only stdlib\rustc artifacts. For stdlib cuts about 3% (diff of total size for patched\unpatched *.rmeta files of stage1-std) of file size, depending on crates.

fixes #88180

23 months agofeat: impl export-executable-symbols
csmoe [Mon, 25 Jul 2022 05:20:23 +0000 (05:20 +0000)]
feat: impl export-executable-symbols

23 months agoExpose size_hint() for TokenStream's iterator
David Tolnay [Mon, 25 Jul 2022 03:36:22 +0000 (20:36 -0700)]
Expose size_hint() for TokenStream's iterator

23 months agoAuto merge of #99676 - thomcc:dont-overwrite, r=tmiasko
bors [Mon, 25 Jul 2022 02:46:36 +0000 (02:46 +0000)]
Auto merge of #99676 - thomcc:dont-overwrite, r=tmiasko

Don't overwrite CodegenFnAttrs when adding used compiler/linker

Pointed out by `@tmiasko` in https://github.com/rust-lang/rust/pull/93718#discussion_r928259163. Probably a better fix than https://github.com/rust-lang/rust/pull/99674 for https://github.com/rust-lang/rust/issues/99596, assuming it does fix the latter.

I don't have the ability to write a regression test for this at the moment, and am quite surprised this didn't cause other failures. The old code is clearly wrong though, but I'm not picky as to which of these is better to go with.

23 months agoImprove error messages involving `derive` and `packed`.
Nicholas Nethercote [Fri, 22 Jul 2022 00:04:37 +0000 (10:04 +1000)]
Improve error messages involving `derive` and `packed`.

There are two errors involving `derive` and `packed`.

```
`#[derive]` can't be derived on a `#[repr(packed)]` struct with type or const parameters
`#[derive]` can't be derived on a `#[repr(packed)]` struct that does not derive Copy
```
The second one overstates things. It is possible to use derive on a
repr(packed) struct that doesn't derive Copy in two cases.
- If all the fields within the struct meet the required alignment: 1 for
  `repr(packed)`, or `N` for `repr(packed(N))`.
- If `Default` is the only trait derived.

This commit improves things in a few ways.
- Changes the errors to say `$TRAIT can't be derived on this ...`.
  This is more accurate, because it's just $TRAIT and *this* packed
  struct that are a problem, not *all* derived traits on *all* packed
  structs.
- Adds more details to the "ERROR" lines in the test case, enough to
  distinguish between the two error messages.
- Adds more cases to the test case that don't cause errors, e.g. `Default`
  derives.
- Uses a wider variety of builtin traits in the test case, for better coverage.

23 months agoAuto merge of #97581 - AngelicosPhosphoros:improve_calloc_check_in_vec_macro_for_tupl...
bors [Mon, 25 Jul 2022 00:20:43 +0000 (00:20 +0000)]
Auto merge of #97581 - AngelicosPhosphoros:improve_calloc_check_in_vec_macro_for_tuples, r=Mark-Simulacrum

Support vec zero-alloc optimization for tuples and byte arrays

* Implement IsZero trait for tuples up to 8 IsZero elements;
* Implement IsZero for u8/i8, leading to implementation of it for arrays of them too;
* Add more codegen tests for this optimization.
* Lower size of array for IsZero trait because it fails to inline checks

23 months agoAuto merge of #99603 - fasterthanlime:ra-subtree-2, r=jyn514
bors [Sun, 24 Jul 2022 21:36:31 +0000 (21:36 +0000)]
Auto merge of #99603 - fasterthanlime:ra-subtree-2, r=jyn514

Convert rust-analyzer to an in-tree tool

This re-adds `rust-lang/rust-analyzer` as a git subtree rather than a submodule.

Closes https://github.com/rust-lang/rust-analyzer/issues/12815.

Prior attempt (research PR): https://github.com/rust-lang/rust/pull/99465

  * [x] Remove submodule: `git rm -f src/tools/rust-analyzer`
  * [x] Add subtree: `git subtree add -P src/tools/rust-analyzer https://github.com/rust-lang/rust-analyzer.git master`
  * [x] Move to `SourceType::InTree`,
  * [x] Enable `rust-analyzer/in-rust-tree` feature when built through `x.py`
  * [x] Add 'check' step
  * [x] Add 'test' step

With this PR, rust-analyzer becomes an "in-tree" tool. Syncs can happen in both directions, see [clippy's relevant book section](https://doc.rust-lang.org/nightly/clippy/development/infrastructure/sync.html).

Making sure `proc-macro-srv` doesn't break when the proc_macro bridge changes effectively becomes the responsibility of `rust-lang/rust` contributors. These days, that's mostly `@mystor,` who has been consulted throughout the process. I'm also making myself available in case there's questions / work needed that nobody else signed up for.

This doesn't change rust-analyzer's release cycle. After this PR is merged and the next nightly goes out, one can point `rust-analyzer.procMacro.server` to the rustup-provided `rust-analyzer` binary. Changes to improve the situation further (auto-discovery/install of the rust-analyzer component) will happen in `rust-lang/rust-analyzer` and be synced here eventually.

23 months agoSupport vec zero-alloc optimization for tuples and byte arrays
AngelicosPhosphoros [Tue, 31 May 2022 12:14:55 +0000 (15:14 +0300)]
Support vec zero-alloc optimization for tuples and byte arrays

* Implement IsZero trait for tuples up to 8 IsZero elements;
* Implement IsZero for u8/i8, leading to implementation of it for arrays of them too;
* Add more codegen tests for this optimization.
* Lower size of array for IsZero trait because it fails to inline checks

23 months agoOnly run proc-macro-srv tests for now (after discussion with @Veykril, @jyn514, and...
Amos Wenger [Sun, 24 Jul 2022 19:04:56 +0000 (21:04 +0200)]
Only run proc-macro-srv tests for now (after discussion with @Veykril, @jyn514, and @lnicola)

23 months agoAuto merge of #99687 - RalfJung:rollup-bojacrc, r=RalfJung
bors [Sun, 24 Jul 2022 18:55:31 +0000 (18:55 +0000)]
Auto merge of #99687 - RalfJung:rollup-bojacrc, r=RalfJung

Rollup of 4 pull requests

Successful merges:

 - #99644 (remove some provenance-related machine hooks that Miri no longer needs)
 - #99657 (Docs - remove unnecessary `mut` that gives a warning)
 - #99672 (Remove Clean trait implementation for more items)
 - #99678 (Update doc comments that refer to config parameter)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

23 months agoadd miri-track-caller to some intrinsic-exposing methods
Ralf Jung [Sun, 24 Jul 2022 18:28:30 +0000 (14:28 -0400)]
add miri-track-caller to some intrinsic-exposing methods

23 months agoRollup merge of #99678 - danbev:rustc_parse-config-doc-comments, r=cjgillot
Ralf Jung [Sun, 24 Jul 2022 18:04:29 +0000 (14:04 -0400)]
Rollup merge of #99678 - danbev:rustc_parse-config-doc-comments, r=cjgillot

Update doc comments that refer to config parameter

This commit updates the `source_file_to_parser` and the
`maybe_source_file_to_parse` function's doc comments which currently
refer to a `config` parameter. The doc comments have been updated to
refer to the `session` parameter similar to the doc comment for
`try_file_to_source_file`, which also takes a `&Session` parameter.

23 months agoRollup merge of #99672 - GuillaumeGomez:clean-trait-removal, r=Dylan-DPC
Ralf Jung [Sun, 24 Jul 2022 18:04:28 +0000 (14:04 -0400)]
Rollup merge of #99672 - GuillaumeGomez:clean-trait-removal, r=Dylan-DPC

Remove Clean trait implementation for more items

Follow up of #99638.

cc `@camelid`
r? `@notriddle`

23 months agoRollup merge of #99657 - Phosra:patch-1, r=Dylan-DPC
Ralf Jung [Sun, 24 Jul 2022 18:04:27 +0000 (14:04 -0400)]
Rollup merge of #99657 - Phosra:patch-1, r=Dylan-DPC

Docs - remove unnecessary `mut` that gives a warning

Fixes #99654.

A trivial linting fix for a Stdio example.

`@rustbot` label +T-lib

23 months agoRollup merge of #99644 - RalfJung:interpret-int-ptr-transmute, r=oli-obk
Ralf Jung [Sun, 24 Jul 2022 18:04:26 +0000 (14:04 -0400)]
Rollup merge of #99644 - RalfJung:interpret-int-ptr-transmute, r=oli-obk

remove some provenance-related machine hooks that Miri no longer needs

Then we can make `scalar_to_ptr` a method on `Scalar`. :)

Fixes https://github.com/rust-lang/miri/issues/2188
r? `@oli-obk`

23 months agoAuto merge of #99409 - tmiasko:atomic-tests, r=m-ou-se
bors [Sun, 24 Jul 2022 16:26:56 +0000 (16:26 +0000)]
Auto merge of #99409 - tmiasko:atomic-tests, r=m-ou-se

Test codegen of atomic compare-exchange with additional memory orderings

* Add a test for atomic operations introduced in #97423 & #98383.
* Add a test for fallback code generation strategy used on LLVM 12 introduced in #98385. Use a separate test case instead of a revision system since test will be gone once LLVM 12 is no longer supported.

23 months agoMake macros test order-resistant
Amos Wenger [Sun, 24 Jul 2022 14:48:06 +0000 (16:48 +0200)]
Make macros test order-resistant

23 months agoUpdate doc comments that refer to config parameter
Daniel Bevenius [Sun, 24 Jul 2022 14:09:04 +0000 (16:09 +0200)]
Update doc comments that refer to config parameter

This commit updates the source_file_to_parser and the
maybe_source_file_to_parse function's doc comments which currently
refer to a config parameter. The doc comments have been updated to
refer to the 'session' parameter similar to the doc comment for
try_file_to_source_file, which also takes a &Session parameter.

23 months agoSort when iterating through CrateGraph
Amos Wenger [Sun, 24 Jul 2022 14:11:05 +0000 (16:11 +0200)]
Sort when iterating through CrateGraph

23 months agoSort in DefMap::dump, since HashMap iteration order isn't defined
Amos Wenger [Sun, 24 Jul 2022 14:04:20 +0000 (16:04 +0200)]
Sort in DefMap::dump, since HashMap iteration order isn't defined

23 months agohir-def tests: sort results before comparing, since FxHashSet iteration order isn...
Amos Wenger [Sun, 24 Jul 2022 13:55:20 +0000 (15:55 +0200)]
hir-def tests: sort results before comparing, since FxHashSet iteration order isn't guaranteed

(And, in fact, it failed on i686)

23 months agoAuto merge of #99670 - Amanieu:revert-99595, r=nikic
bors [Sun, 24 Jul 2022 13:46:15 +0000 (13:46 +0000)]
Auto merge of #99670 - Amanieu:revert-99595, r=nikic

Revert "Mark atomics as unsupported on thumbv6m"

This is a breaking change for the `thumbv6m` target. See #99668 for discussion on how we can proceed forward from here.

This reverts commit 75146102197c7f35e6c38cb402b2bc1065858c54.

cc `@nikic`

23 months agoDon't overwrite CodegenFnAttrs when adding used compiler/linker
Thom Chiovoloni [Sun, 24 Jul 2022 13:18:34 +0000 (06:18 -0700)]
Don't overwrite CodegenFnAttrs when adding used compiler/linker

23 months agodon't ICE on invalid dyn calls
Ralf Jung [Sun, 24 Jul 2022 13:21:05 +0000 (09:21 -0400)]
don't ICE on invalid dyn calls

23 months agoRemove Clean trait implementation for Constant
Guillaume Gomez [Sun, 24 Jul 2022 13:08:24 +0000 (15:08 +0200)]
Remove Clean trait implementation for Constant

23 months agoRemove Clean trait implementation for FieldDef
Guillaume Gomez [Sun, 24 Jul 2022 12:58:10 +0000 (14:58 +0200)]
Remove Clean trait implementation for FieldDef

23 months agoRevert "Mark atomics as unsupported on thumbv6m"
Amanieu d'Antras [Sun, 24 Jul 2022 12:12:08 +0000 (13:12 +0100)]
Revert "Mark atomics as unsupported on thumbv6m"

This reverts commit 75146102197c7f35e6c38cb402b2bc1065858c54.

23 months agoFix .gitattributes for test_data
Amos Wenger [Sun, 24 Jul 2022 12:05:35 +0000 (14:05 +0200)]
Fix .gitattributes for test_data

23 months agoadd const hack comment
Deadbeef [Fri, 14 Jan 2022 08:55:19 +0000 (16:55 +0800)]
add const hack comment

23 months agoAdd issue numbers
Deadbeef [Wed, 29 Dec 2021 06:18:52 +0000 (14:18 +0800)]
Add issue numbers

23 months agoConstify a few const `(Partial)Ord` impls
Deadbeef [Wed, 29 Dec 2021 06:07:54 +0000 (14:07 +0800)]
Constify a few const `(Partial)Ord` impls

23 months agomake sure has_deref is correct
ouz-a [Sun, 24 Jul 2022 10:26:20 +0000 (13:26 +0300)]
make sure has_deref is correct

23 months agoAuto merge of #93429 - fee1-dead-contrib:allow-super-trait-tilde-const, r=oli-obk
bors [Sun, 24 Jul 2022 09:16:02 +0000 (09:16 +0000)]
Auto merge of #93429 - fee1-dead-contrib:allow-super-trait-tilde-const, r=oli-obk

Allow `trait A: ~const B`

What's included: a minimal working change set for `~const` supertraits to work.

r? `@oli-obk`

23 months agoSmall fixups
Joshua Nelson [Sat, 23 Jul 2022 20:37:46 +0000 (15:37 -0500)]
Small fixups

- use `path` instead of `paths`
- don't mark rust-analyzer as an optional tool
- print the cargo command that's run in the proc-macro-test build script

  this originally was part of a change to fix `test --stage 0 rust-analyzer`,
  but I'm going to leave that for a separate PR so it's easier to review.

23 months agoMove cfg attrs up to the mod definitions to disable sourcegen
Amos Wenger [Sat, 23 Jul 2022 15:23:13 +0000 (17:23 +0200)]
Move cfg attrs up to the mod definitions to disable sourcegen

23 months agoDisable all source-gen tests at compile time
Amos Wenger [Sat, 23 Jul 2022 00:06:11 +0000 (02:06 +0200)]
Disable all source-gen tests at compile time

23 months agoDon't run slow tests in Rust CI, only RA CI
Amos Wenger [Fri, 22 Jul 2022 16:16:46 +0000 (18:16 +0200)]
Don't run slow tests in Rust CI, only RA CI

23 months agoAdd comment about CARGO_WORKSPACE_DIR
Amos Wenger [Fri, 22 Jul 2022 16:06:38 +0000 (18:06 +0200)]
Add comment about CARGO_WORKSPACE_DIR

23 months agoUse top-level path in tool Step
Amos Wenger [Fri, 22 Jul 2022 16:03:04 +0000 (18:03 +0200)]
Use top-level path in tool Step

23 months agoAllow cross-compiling, build all crates
Amos Wenger [Fri, 22 Jul 2022 16:01:49 +0000 (18:01 +0200)]
Allow cross-compiling, build all crates

23 months agoUse compiler.stage
Amos Wenger [Fri, 22 Jul 2022 15:59:15 +0000 (17:59 +0200)]
Use compiler.stage

Co-authored-by: Joshua Nelson <github@jyn.dev>
23 months agoAdd test step for rust-analyzer, run it by default
Amos Wenger [Fri, 22 Jul 2022 15:21:33 +0000 (17:21 +0200)]
Add test step for rust-analyzer, run it by default

23 months agoCheck only tests and benches, not examples
Amos Wenger [Fri, 22 Jul 2022 14:38:05 +0000 (16:38 +0200)]
Check only tests and benches, not examples

23 months agoAdd check step, stuck on 'no output generated for libgoto_def-hash rmeta'
Amos Wenger [Fri, 22 Jul 2022 14:23:40 +0000 (16:23 +0200)]
Add check step, stuck on 'no output generated for libgoto_def-hash rmeta'

23 months agoConvert rust-analyzer to 'in-tree' tool, pass 'in-rust-tree' feature by default
Amos Wenger [Fri, 22 Jul 2022 13:38:45 +0000 (15:38 +0200)]
Convert rust-analyzer to 'in-tree' tool, pass 'in-rust-tree' feature by default

23 months agoAdd 'src/tools/rust-analyzer/' from commit '977e12a0bdc3e329af179ef3a9d466af9eb613bb'
Amos Wenger [Sun, 24 Jul 2022 08:37:08 +0000 (10:37 +0200)]
Add 'src/tools/rust-analyzer/' from commit '977e12a0bdc3e329af179ef3a9d466af9eb613bb'

git-subtree-dir: src/tools/rust-analyzer
git-subtree-mainline: 3c98486a0cdb6d92f0fca34ffb1fd46c0e498653
git-subtree-split: 977e12a0bdc3e329af179ef3a9d466af9eb613bb

23 months agoRemove rust-analyzer submodule
Amos Wenger [Sun, 24 Jul 2022 08:36:44 +0000 (10:36 +0200)]
Remove rust-analyzer submodule

23 months agoInstantiate constness in wfcheck
Deadbeef [Sat, 23 Jul 2022 14:25:32 +0000 (14:25 +0000)]
Instantiate constness in wfcheck

23 months agoAuto merge of #98674 - RalfJung:miri-stacktrace-pruning, r=Mark-Simulacrum
bors [Sun, 24 Jul 2022 06:46:46 +0000 (06:46 +0000)]
Auto merge of #98674 - RalfJung:miri-stacktrace-pruning, r=Mark-Simulacrum

miri: prune some atomic operation and raw pointer details from stacktrace

Since Miri removes `track_caller` frames from the stacktrace, adding that attribute can help make backtraces more readable (similar to how it makes panic locations better). I made them only show up with `cfg(miri)` to make sure the extra arguments induced by `track_caller` do not cause any runtime performance trouble.

This is also testing the waters for whether the libs team is okay with having these attributes in their code, or whether you'd prefer if we find some other way to do this. If you are fine with this, we will probably want to add it to a lot more functions (all the other atomic operations, to start).

Before:
```
error: Undefined Behavior: Data race detected between Atomic Load on Thread(id = 2) and Write on Thread(id = 1) at alloc1727 (current vector clock = VClock([9, 0, 6]), conflicting timestamp = VClock([0, 6]))
    --> /home/r/.rustup/toolchains/miri/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:2594:23
     |
2594 |             SeqCst => intrinsics::atomic_load_seqcst(dst),
     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Data race detected between Atomic Load on Thread(id = 2) and Write on Thread(id = 1) at alloc1727 (current vector clock = VClock([9, 0, 6]), conflicting timestamp = VClock([0, 6]))
     |
     = help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
     = help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information

     = note: inside `std::sync::atomic::atomic_load::<usize>` at /home/r/.rustup/toolchains/miri/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:2594:23
     = note: inside `std::sync::atomic::AtomicUsize::load` at /home/r/.rustup/toolchains/miri/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:1719:26
note: inside closure at ../miri/tests/fail/data_race/atomic_read_na_write_race1.rs:22:13
    --> ../miri/tests/fail/data_race/atomic_read_na_write_race1.rs:22:13
     |
22   |             (&*c.0).load(Ordering::SeqCst)
     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
```

After:
```
error: Undefined Behavior: Data race detected between Atomic Load on Thread(id = 2) and Write on Thread(id = 1) at alloc1727 (current vector clock = VClock([9, 0, 6]), conflicting timestamp = VClock([0, 6]))
  --> tests/fail/data_race/atomic_read_na_write_race1.rs:22:13
   |
22 |             (&*c.0).load(Ordering::SeqCst)
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Data race detected between Atomic Load on Thread(id = 2) and Write on Thread(id = 1) at alloc1727 (current vector clock = VClock([9, 0, 6]), conflicting timestamp = VClock([0, 6]))
   |
   = help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
   = help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information

   = note: inside closure at tests/fail/data_race/atomic_read_na_write_race1.rs:22:13
```

23 months agoUse VecMap::get in ConstraintLocator::check
Michael Goulet [Sun, 24 Jul 2022 05:51:03 +0000 (05:51 +0000)]
Use VecMap::get in ConstraintLocator::check

23 months agoRemove `mut`
Phosra [Sun, 24 Jul 2022 04:22:43 +0000 (21:22 -0700)]
Remove `mut`

23 months agoAuto merge of #99251 - cuviper:hashbrown-0.12, r=Mark-Simulacrum
bors [Sun, 24 Jul 2022 04:03:29 +0000 (04:03 +0000)]
Auto merge of #99251 - cuviper:hashbrown-0.12, r=Mark-Simulacrum

Upgrade indexmap and thorin-dwp to use hashbrown 0.12

This removes the last dependencies on hashbrown 0.11.

This also upgrades to hashbrown 0.12.3 to fix a double-free (#99372).

23 months agoAuto merge of #95548 - rcvalle:rust-cfi-2, r=nagisa
bors [Sun, 24 Jul 2022 01:22:36 +0000 (01:22 +0000)]
Auto merge of #95548 - rcvalle:rust-cfi-2, r=nagisa

Add fine-grained LLVM CFI support to the Rust compiler

This PR improves the LLVM Control Flow Integrity (CFI) support in the Rust compiler by providing forward-edge control flow protection for Rust-compiled code only by aggregating function pointers in groups identified by their return and parameter types.

Forward-edge control flow protection for C or C++ and Rust -compiled code "mixed binaries" (i.e., for when C or C++ and Rust -compiled code share the same virtual address space) will be provided in later work as part of this project by identifying C char and integer type uses at the time types are encoded (see Type metadata in the design document in the tracking issue https://github.com/rust-lang/rust/issues/89653).

LLVM CFI can be enabled with -Zsanitizer=cfi and requires LTO (i.e., -Clto).

Thank you again, `@eddyb,` `@nagisa,` `@pcc,` and `@tmiasko` for all the help!

23 months agoAuto merge of #99652 - GuillaumeGomez:rollup-38v0x7y, r=GuillaumeGomez
bors [Sat, 23 Jul 2022 22:41:48 +0000 (22:41 +0000)]
Auto merge of #99652 - GuillaumeGomez:rollup-38v0x7y, r=GuillaumeGomez

Rollup of 6 pull requests

Successful merges:

 - #99298 (Make `ui-fulldeps/gated-plugins` and `ui-fulldeps/multiple-plugins` tests stage 2 only)
 - #99396 (Add some additional double-adjustment regression tests)
 - #99449 (Do not resolve associated const when there is no provided value)
 - #99595 (Mark atomics as unsupported on thumbv6m)
 - #99627 (Lock stdout once when listing tests)
 - #99638 (Remove Clean trait implementation for hir::Ty and middle::Ty)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

23 months agoAuto merge of #12859 - matklad:dont-color-the-whole-block-red-all-the-time-please...
bors [Sat, 23 Jul 2022 21:37:32 +0000 (21:37 +0000)]
Auto merge of #12859 - matklad:dont-color-the-whole-block-red-all-the-time-please, r=Veykril

feat: don't highlight the whole fn on return-type mismatch

23 months agoRollup merge of #99638 - GuillaumeGomez:rm-clean-trait, r=notriddle
Guillaume Gomez [Sat, 23 Jul 2022 21:34:32 +0000 (23:34 +0200)]
Rollup merge of #99638 - GuillaumeGomez:rm-clean-trait, r=notriddle

Remove Clean trait implementation for hir::Ty and middle::Ty

While going through the code, I realized that the "remove the Clean trait" effort which was started a while ago was never finished.

The idea behind it was to make it much simpler to go through the different clean steps (which is definitely not easy when you just have `something.clean(cx)`).

I'm planning to finish this effort.

cc ``@camelid``
r? ``@notriddle``

23 months agoRollup merge of #99627 - saethlin:lock-once, r=eddyb
Guillaume Gomez [Sat, 23 Jul 2022 21:34:31 +0000 (23:34 +0200)]
Rollup merge of #99627 - saethlin:lock-once, r=eddyb

Lock stdout once when listing tests

This is a marginal optimization for normal operation, but for `cargo miri nextest list` (which is invoked by `cargo miri nextest run`) this knocks the startup time on `regex` down from 87 seconds to 17 seconds. Still slow, but a nice 5x improvement.

23 months agoRollup merge of #99595 - nikic:thumbv6m-atomics, r=nagisa
Guillaume Gomez [Sat, 23 Jul 2022 21:34:31 +0000 (23:34 +0200)]
Rollup merge of #99595 - nikic:thumbv6m-atomics, r=nagisa

Mark atomics as unsupported on thumbv6m

The thumbv6m target does not support atomics. Historically, LLVM
had a bug where atomic load/stores for this target were emitted
as plain load/stores rather than as libatomic calls. This was
fixed in https://reviews.llvm.org/D120026, which will be part of
LLVM 15. As we require that "atomic support" does not use libatomic,
we need to indicate that this target does not have native atomics.

23 months agoRollup merge of #99449 - compiler-errors:assoc-const-missing-item, r=lcnr
Guillaume Gomez [Sat, 23 Jul 2022 21:34:30 +0000 (23:34 +0200)]
Rollup merge of #99449 - compiler-errors:assoc-const-missing-item, r=lcnr

Do not resolve associated const when there is no provided value

Fixes #98629, since now we just delay a bug when we're not able to evaluate a const item due to the value not actually being provided by anything. This means compilation proceeds forward to where the "missing item in impl" error is emitted.

----

The root issue here is that when we're looking for the defining `LeafDef` in `resolve_associated_item`, we end up getting the trait's AssocItem instead of the impl's AssocItem (which does not exist). This resolution "succeeds" even if the trait's item has no default value, and then since this item has no value to evaluate, it turns into a const eval error.

This root issue becomes problematic (as in #98629) when this const eval error happens in wfcheck (for example, due to normalizing the param-env of something that references this const). Since this happens sooner than the check that an impl actually provides all of the items that a trait requires (which happens during later typecheck), we end up aborting compilation early with only this un-informative message.

I'm not exactly sure _why_ this bug arises due to #96591 -- perhaps valtrees are evaluated more eagerly than in the old system?

r? ``@oli-obk`` or ``@lcnr`` since y'all are familiar with const eval and reviewed #96591, though feel free to reassign.

This is a regression from stable to beta, so I would be open to considering this for beta backport. It seems correct to me, especially given the improvements in the other UI tests this PR touches, but may have some side-effects that I'm unaware of...?

23 months agoRollup merge of #99396 - compiler-errors:missing-tests, r=Mark-Simulacrum
Guillaume Gomez [Sat, 23 Jul 2022 21:34:29 +0000 (23:34 +0200)]
Rollup merge of #99396 - compiler-errors:missing-tests, r=Mark-Simulacrum

Add some additional double-adjustment regression tests

I accidentally missed these when I rebased #98785

cc #98894 and #98897

23 months agoRollup merge of #99298 - ChrisDenton:ignore-plugins-stage1, r=Mark-Simulacrum
Guillaume Gomez [Sat, 23 Jul 2022 21:34:28 +0000 (23:34 +0200)]
Rollup merge of #99298 - ChrisDenton:ignore-plugins-stage1, r=Mark-Simulacrum

Make `ui-fulldeps/gated-plugins` and `ui-fulldeps/multiple-plugins` tests stage 2 only

These test can fail on stage 1.

Fixes #99295

23 months agointernal: extract common code for adjusting diagnostic range
Aleksey Kladov [Sat, 23 Jul 2022 21:16:36 +0000 (22:16 +0100)]
internal: extract common code for adjusting diagnostic range

23 months agofeat: don't highlight the whole fn on return-type mismatch
Aleksey Kladov [Sat, 23 Jul 2022 20:16:59 +0000 (21:16 +0100)]
feat: don't highlight the whole fn on return-type mismatch

23 months agoAuto merge of #98208 - ivanloz:master, r=nagisa
bors [Sat, 23 Jul 2022 20:01:07 +0000 (20:01 +0000)]
Auto merge of #98208 - ivanloz:master, r=nagisa

Add support for LLVM ShadowCallStack.

LLVMs ShadowCallStack provides backward edge control flow integrity protection by using a separate shadow stack to store and retrieve a function's return address.

LLVM currently only supports this for AArch64 targets. The x18 register is used to hold the pointer to the shadow stack, and therefore this only works on ABIs which reserve x18. Further details are available in the [LLVM ShadowCallStack](https://clang.llvm.org/docs/ShadowCallStack.html) docs.

# Usage
`-Zsanitizer=shadow-call-stack`

# Comments/Caveats
* Currently only enabled for the aarch64-linux-android target
* Requires the platform to define a runtime to initialize the shadow stack, see the [LLVM docs](https://clang.llvm.org/docs/ShadowCallStack.html) for more detail.

23 months agoUpdate documentation for LLVM CFI support
Ramon de C Valle [Fri, 1 Apr 2022 05:51:37 +0000 (22:51 -0700)]
Update documentation for LLVM CFI support

This commit updates the documentation for the LLVM Control Flow
Integrity (CFI) support in the Rust compiler (see #95548 and #89653).

23 months agoAdd fine-grained LLVM CFI support to the Rust compiler
Ramon de C Valle [Fri, 1 Apr 2022 05:50:41 +0000 (22:50 -0700)]
Add fine-grained LLVM CFI support to the Rust compiler

This commit improves the LLVM Control Flow Integrity (CFI) support in
the Rust compiler by providing forward-edge control flow protection for
Rust-compiled code only by aggregating function pointers in groups
identified by their return and parameter types.

Forward-edge control flow protection for C or C++ and Rust -compiled
code "mixed binaries" (i.e., for when C or C++ and Rust -compiled code
share the same virtual address space) will be provided in later work as
part of this project by identifying C char and integer type uses at the
time types are encoded (see Type metadata in the design document in the
tracking issue #89653).

LLVM CFI can be enabled with -Zsanitizer=cfi and requires LTO (i.e.,
-Clto).

23 months agoAuto merge of #12851 - DorianListens:dscheidt/if-completion-match-guard, r=Veykril
bors [Sat, 23 Jul 2022 17:42:59 +0000 (17:42 +0000)]
Auto merge of #12851 - DorianListens:dscheidt/if-completion-match-guard, r=Veykril

fix: Don't add braces to 'if' completion in match guard position

fixes #12823

Is this what you were thinking of here, `@Veykril` ? I haven't done any work on completions before, so I could definitely be misunderstanding the issue.