]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoMerge commit 'e228f0c16ea8c34794a6285bf57aab627c26b147' into libgccjit-codegen
Antoni Boucher [Sun, 15 Aug 2021 12:29:07 +0000 (08:29 -0400)]
Merge commit 'e228f0c16ea8c34794a6285bf57aab627c26b147' into libgccjit-codegen

2 years agoCleanup (#67)
antoyo [Sun, 15 Aug 2021 12:28:46 +0000 (08:28 -0400)]
Cleanup (#67)

2 years agoMerge commit '0c89065b934397b62838fe3e4ef6f6352fc52daf' into libgccjit-codegen
Antoni Boucher [Sat, 14 Aug 2021 14:06:05 +0000 (10:06 -0400)]
Merge commit '0c89065b934397b62838fe3e4ef6f6352fc52daf' into libgccjit-codegen

2 years agoUpdate to nightly-2021-08-12 (#61)
antoyo [Sat, 14 Aug 2021 14:05:49 +0000 (10:05 -0400)]
Update to nightly-2021-08-12 (#61)

2 years agoExclude rustc_codegen_gcc from namespace
Antoni Boucher [Mon, 19 Jul 2021 23:13:02 +0000 (19:13 -0400)]
Exclude rustc_codegen_gcc from namespace

2 years agoFix tidy
Antoni Boucher [Mon, 19 Jul 2021 23:08:08 +0000 (19:08 -0400)]
Fix tidy

2 years agoAdd 'compiler/rustc_codegen_gcc/' from commit 'afae271d5d3719eeb92c18bc004bb6d1965a5f3f'
Antoni Boucher [Fri, 13 Aug 2021 01:53:49 +0000 (21:53 -0400)]
Add 'compiler/rustc_codegen_gcc/' from commit 'afae271d5d3719eeb92c18bc004bb6d1965a5f3f'

git-subtree-dir: compiler/rustc_codegen_gcc
git-subtree-mainline: ae90dcf0207c57c3034f00b07048d63f8b2363c8
git-subtree-split: afae271d5d3719eeb92c18bc004bb6d1965a5f3f

2 years agoInitial commit
Antoni Boucher [Sun, 10 May 2020 14:54:30 +0000 (10:54 -0400)]
Initial commit

2 years agoAuto merge of #85357 - Andy-Python-Programmer:aarch64_uefi_target, r=petrochenkov
bors [Mon, 9 Aug 2021 13:16:51 +0000 (13:16 +0000)]
Auto merge of #85357 - Andy-Python-Programmer:aarch64_uefi_target, r=petrochenkov

Add `aarch64-unknown-uefi` target

This pull request adds the `aarch64-unknown-uefi` target.

2 years agoAuto merge of #87820 - elichai:patch-2, r=kennytm
bors [Mon, 9 Aug 2021 08:19:19 +0000 (08:19 +0000)]
Auto merge of #87820 - elichai:patch-2, r=kennytm

Replace read_to_string with read_line in Stdin example

The current example results in infinitely reading from stdin, which can confuse newcomers trying to read from stdin.
(`@razmag` encountered this while learning the language from the docs)

2 years agoAdd the aarch64-unknown-uefi target
unknown [Sun, 16 May 2021 03:28:16 +0000 (13:28 +1000)]
Add the aarch64-unknown-uefi target

* This commit adds the aarch64-unknown-uefi target and also adds it into
the supported targets list under the tier-3 target table.
* Uses the small code model by default

Signed-off-by: Andy-Python-Programmer <andypythonappdeveloper@gmail.com>
2 years agoAuto merge of #87619 - 12101111:fix-native_link_modifiers_bundle, r=petrochenkov
bors [Mon, 9 Aug 2021 03:59:30 +0000 (03:59 +0000)]
Auto merge of #87619 - 12101111:fix-native_link_modifiers_bundle, r=petrochenkov

Fix feature gate checking of static-nobundle and native_link_modifiers

Feature native_link_modifiers_bundle don't need feature static-nobundle
to work.

Also check the feature gates when using native_link_modifiers from command line options. Current nighly compiler don't check those feature gate.

```
> touch lib.rs
> rustc +nightly lib.rs -L /usr/lib -l static:+bundle=dl --crate-type=rlib
> rustc +nightly lib.rs -L /usr/lib -l dylib:+as-needed=dl --crate-type=dylib -Ctarget-feature=-crt-static
> rustc +nightly lib.rs -L /usr/lib -l static:-bundle=dl --crate-type=rlib
error[E0658]: kind="static-nobundle" is unstable
  |
  = note: see issue #37403 <https://github.com/rust-lang/rust/issues/37403> for more information
  = help: add `#![feature(static_nobundle)]` to the crate attributes to enable

error: aborting due to previous error

For more information about this error, try `rustc --explain E0658`.

```

First found this in https://github.com/rust-lang/rust/pull/85600#discussion_r676612655

2 years agoAuto merge of #87465 - audunhalland:refactor_typeck_primary_body_of, r=eddyb
bors [Mon, 9 Aug 2021 01:08:52 +0000 (01:08 +0000)]
Auto merge of #87465 - audunhalland:refactor_typeck_primary_body_of, r=eddyb

Simplify typeck/primary_body_of, fix comment to match return signature

Hi, new contributor here! I'm carefully reading through the various modules just to learn. I noticed this function, `primary_body_of`, which has gone through a couple of refactors over time, adding new `Option`s to its returned tuple. Observations:

1. the `fn`'s documentation was not all up to date with the the current return signature.
2. `FnHeader` and `FnDecl` are always both `Some` or `None`. So I figured it might just return a reference to the full `hir::FnSig`, for simplicity and more precise typing. It's a pure refactor.

I'm learning better by working with code than just reading it, so here goes! If you want to avoid pure refactor PRs that don't really fix anything, I can revert the code change to only update the comment instead.

2 years agoAuto merge of #87235 - poliorcetics:issue-87217-fn-quali-order, r=nagisa
bors [Sun, 8 Aug 2021 22:28:01 +0000 (22:28 +0000)]
Auto merge of #87235 - poliorcetics:issue-87217-fn-quali-order, r=nagisa

Improve diagnostics for wrongly ordered keywords in function declaration

Fix #87217

`@rustbot` label A-diagnostics T-compiler

2 years agoAuto merge of #86879 - YohDeadfall:stabilize-vec-shrink-to, r=dtolnay
bors [Sun, 8 Aug 2021 19:37:02 +0000 (19:37 +0000)]
Auto merge of #86879 - YohDeadfall:stabilize-vec-shrink-to, r=dtolnay

Stabilize Vec<T>::shrink_to

This PR stabilizes `shrink_to` feature and closes the corresponding issue. The second point was addressed already, and no `panic!` should occur.

Closes #56431.

2 years agoBump shrink_to stabilization to Rust 1.56
David Tolnay [Sun, 8 Aug 2021 18:36:53 +0000 (11:36 -0700)]
Bump shrink_to stabilization to Rust 1.56

2 years agoAuto merge of #87697 - GuillaumeGomez:add-e0784, r=nagisa
bors [Sun, 8 Aug 2021 16:40:14 +0000 (16:40 +0000)]
Auto merge of #87697 - GuillaumeGomez:add-e0784, r=nagisa

Assign E0784 error code for union expression errors

2 years ago Fix feature gate checking of static-nobundle and native_link_modifiers
12101111 [Fri, 6 Aug 2021 13:51:59 +0000 (21:51 +0800)]
 Fix feature gate checking of static-nobundle and native_link_modifiers

2 years agoAuto merge of #87827 - eddyb:wrapperless-mem-replace, r=m-ou-se
bors [Sun, 8 Aug 2021 13:11:09 +0000 (13:11 +0000)]
Auto merge of #87827 - eddyb:wrapperless-mem-replace, r=m-ou-se

Avoid using the `copy_nonoverlapping` wrapper through `mem::replace`.

This is a much simpler way to achieve the pre-#86003 behavior of `mem::replace` not needing dynamically-sized `memcpy`s (at least before inlining), than re-doing #81238 (which needs #86699 or something similar).

I didn't notice it until recently, but `ptr::write` already explicitly avoided using the wrapper, while `ptr::read` just called the wrapper (and was the reason for us observing any behavior change from #86003 in Rust-GPU).

<hr/>

The codegen test I've added fails without the change to `core::ptr::read` like this (ignore the `v0` mangling, I was using a worktree with it turned on by default, for this):
```llvm
       13: ; core::intrinsics::copy_nonoverlapping::<u8>
       14: ; Function Attrs: inlinehint nonlazybind uwtable
       15: define internal void `@_RINvNtCscK5tvALCJol_4core10intrinsics19copy_nonoverlappinghECsaS4X3EinRE8_25mem_replace_direct_memcpy(i8*` %src, i8* %dst, i64 %count) unnamed_addr #0 {
       16: start:
       17:  %0 = mul i64 %count, 1
       18:  call void `@llvm.memcpy.p0i8.p0i8.i64(i8*` align 1 %dst, i8* align 1 %src, i64 %0, i1 false)
not:17      !~~~~~~~~~~~~~~~~~~~~~                                                                     error: no match expected
       19:  ret void
       20: }
```
With the `core::ptr::read` change, `core::intrinsics::copy_nonoverlapping` doesn't get instantiated and the test passes.

<hr/>

r? `@m-ou-se` cc `@nagisa` (codegen test) `@oli-obk` / `@RalfJung` (miri diagnostic changes)

2 years agoAvoid using the `copy_nonoverlapping` wrapper through `mem::replace`.
Eduard-Mihai Burtescu [Fri, 6 Aug 2021 17:33:02 +0000 (20:33 +0300)]
Avoid using the `copy_nonoverlapping` wrapper through `mem::replace`.

2 years agoAuto merge of #87836 - tsoutsman:master, r=petrochenkov
bors [Sun, 8 Aug 2021 10:23:17 +0000 (10:23 +0000)]
Auto merge of #87836 - tsoutsman:master, r=petrochenkov

Change proc_macro::Diagnostics docs

With Rust 1.54 attributes can invoke function-like macros. This allows functions generated by macros to have non-generic documentation. This pull request changes the documentation of `proc_macro::Diagnostics` to be more specific and include a link to the level.
## Example
Before:
```markdown
Adds a new child diagnostic message to `self` with the level
identified by this method’s name with the given `message`.
```
After:
```markdown
Adds a new child diagnostic message to self with the [`Level::Error`]
level, and the given `message`.
```

2 years agoAuto merge of #87815 - BoxyUwU:cec-generics-of-ice, r=eddyb
bors [Sun, 8 Aug 2021 07:15:48 +0000 (07:15 +0000)]
Auto merge of #87815 - BoxyUwU:cec-generics-of-ice, r=eddyb

encode `generics_of` for fields and ty params

Fixes #87674
Fixes #87603

ICE was caused by calling `generics_of` on a `DefId` without any `generics_of` results. This was happening when we call `generics_of` on parent `DefId`s of an unevaluated const when we evaluate it.

r? `@lcnr`

2 years agoAuto merge of #87798 - durin42:llvm-14, r=nikic
bors [Sun, 8 Aug 2021 04:33:22 +0000 (04:33 +0000)]
Auto merge of #87798 - durin42:llvm-14, r=nikic

PassWrapper: handle move of OptimizationLevel class out of PassBuilder

This is the first build break of the LLVM 14 cycle, and was caused by
https://reviews.llvm.org/D107025. Mercifully an easy fix.

2 years agoMerge branch 'rust-lang:master' into master
Klim Tsoutsman [Sun, 8 Aug 2021 03:17:23 +0000 (13:17 +1000)]
Merge branch 'rust-lang:master' into master

2 years agoAuto merge of #86744 - ijackson:sink-default, r=dtolnay
bors [Sun, 8 Aug 2021 01:52:32 +0000 (01:52 +0000)]
Auto merge of #86744 - ijackson:sink-default, r=dtolnay

impl Default, Copy, Clone for std::io::Sink and Empty

The omission of `Sink: Default` is causing me a slight inconvenience in a test harness.  There seems little reason for this and `Empty` not to be `Clone` and `Copy` too.

I have made all three of these insta-stable, because:

AIUI `Copy` can only be derived, and I was not able to find any examples of how to unstably derive it.  I think it is probably not possible.

I hunted through the git history for precedent and found

79b8ad84c84481a43704213cd0948d2ba0ea63b4
> Implement `Copy` for `IoSlice`
> https://github.com/rust-lang/rust/pull/69403

which was also insta-stable.

2 years agoAuto merge of #87772 - npmccallum:naked_abi, r=Amanieu
bors [Sat, 7 Aug 2021 23:24:15 +0000 (23:24 +0000)]
Auto merge of #87772 - npmccallum:naked_abi, r=Amanieu

Move naked function ABI check to its own lint

This check was previously categorized under the lint named
`UNSUPPORTED_NAKED_FUNCTIONS`. That lint is future incompatible and will
be turned into an error in a future release. However, as defined in the
Constrained Naked Functions RFC, this check should only be a warning.
This is because it is possible for a naked function to be implemented in
such a way that it does not break even the undefined ABI. For example, a
`jmp` to a `const`.

Therefore, this patch defines a new lint named
`UNDEFINED_NAKED_FUNCTION_ABI` which contains just this single check.
Unlike `UNSUPPORTED_NAKED_FUNCTIONS`, `UNDEFINED_NAKED_FUNCTION_ABI`
will not be converted to an error in the future.

rust-lang/rfcs#2774
rust-lang/rfcs#2972

2 years agoAuto merge of #87743 - cuviper:opaque-calls, r=nikic
bors [Sat, 7 Aug 2021 20:43:25 +0000 (20:43 +0000)]
Auto merge of #87743 - cuviper:opaque-calls, r=nikic

Prepare call/invoke for opaque pointers

Rather than relying on `getPointerElementType()` from LLVM function
pointers, we now pass the function type explicitly when building `call`
or `invoke` instructions.

2 years agoAuto merge of #87851 - JohnTitor:rollup-odvmr47, r=JohnTitor
bors [Sat, 7 Aug 2021 18:21:04 +0000 (18:21 +0000)]
Auto merge of #87851 - JohnTitor:rollup-odvmr47, r=JohnTitor

Rollup of 6 pull requests

Successful merges:

 - #87744 (Add x.py option to --force-rerun compiletest tests)
 - #87789 (Make vec-shrink-panic test compatible with v0 mangling)
 - #87833 (Fix typo -- "The" -> "They")
 - #87834 (Fix small typo)
 - #87838 (Document that fs::read_dir skips . and ..)
 - #87842 (Fix intra doc link in hidden doc of Iterator::__iterator_get_unchecked)

Failed merges:

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

2 years agoRollup merge of #87842 - steffahn:hidden_broken_intra_doc, r=dtolnay
Yuki Okushi [Sat, 7 Aug 2021 16:13:45 +0000 (01:13 +0900)]
Rollup merge of #87842 - steffahn:hidden_broken_intra_doc, r=dtolnay

Fix intra doc link in hidden doc of Iterator::__iterator_get_unchecked

Recently, I edited the import list of the `core::iter::traits::iterator` module (in #85874). This results in a broken intra doc link in a hidden documentation with the effect that `RUSTDOCFLAGS='--document-private-items --document-hidden-items' x doc library/std` fails. (This can be worked around by adding `-Arustdoc::broken-intra-doc-links`; still, it’s a broken link so let’s fix it.)

``@rustbot`` label C-cleanup, T-libs

2 years agoRollup merge of #87838 - jetomit:add-readdir-note, r=dtolnay
Yuki Okushi [Sat, 7 Aug 2021 16:13:44 +0000 (01:13 +0900)]
Rollup merge of #87838 - jetomit:add-readdir-note, r=dtolnay

Document that fs::read_dir skips . and ..

Hi,

I think this is worth noting in the docs since it differs from POSIX `readdir`. I didn’t put it under platform-specific notes because it seems to be consistent across platforms, and changing this behavior in the future could cause pretty nasty bugs.

Thanks!

2 years agoRollup merge of #87834 - camelid:span-typo, r=CraftSpider
Yuki Okushi [Sat, 7 Aug 2021 16:13:43 +0000 (01:13 +0900)]
Rollup merge of #87834 - camelid:span-typo, r=CraftSpider

Fix small typo

The closing backtick was outside the closing bracket,
which is why the intra-doc link wasn't working.

2 years agoRollup merge of #87833 - m-rsha:patch-1, r=Aaron1011
Yuki Okushi [Sat, 7 Aug 2021 16:13:43 +0000 (01:13 +0900)]
Rollup merge of #87833 - m-rsha:patch-1, r=Aaron1011

Fix typo -- "The" -> "They"

I was reading through source code to try to learn more about the language and how to make the most of it when I ran into a small typo, so I figured I'd offer up a fix! I'm pretty new now, but hopefully I can offer up more substantial changes later. :D

2 years agoRollup merge of #87789 - tmiasko:panik, r=Mark-Simulacrum
Yuki Okushi [Sat, 7 Aug 2021 16:13:42 +0000 (01:13 +0900)]
Rollup merge of #87789 - tmiasko:panik, r=Mark-Simulacrum

Make vec-shrink-panic test compatible with v0 mangling

The v0 mangling includes an instantiating crate in a mangled name,
which crates a false positive match for a word `panic`.
Rename crate name / test case to avoid the issue.

2 years agoRollup merge of #87744 - Smittyvb:xpy-test-force-rerun, r=Mark-Simulacrum
Yuki Okushi [Sat, 7 Aug 2021 16:13:41 +0000 (01:13 +0900)]
Rollup merge of #87744 - Smittyvb:xpy-test-force-rerun, r=Mark-Simulacrum

Add x.py option to --force-rerun compiletest tests

This can be used like `./x.py test src/test/ui/abi/ --force-rerun`, and is useful when verifying that newly blessed tests don't change between test runs (such as due to being dependent on the current time or memory layout or RNG), without needing to change the test file or find the right file in `build` to remove.

2 years agoAuto merge of #87849 - RalfJung:miri, r=RalfJung
bors [Sat, 7 Aug 2021 15:53:32 +0000 (15:53 +0000)]
Auto merge of #87849 - RalfJung:miri, r=RalfJung

update Miri

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

2 years agoupdate Miri
Ralf Jung [Sat, 7 Aug 2021 15:46:45 +0000 (17:46 +0200)]
update Miri

2 years agoFix naked function test run on non-x86_64
Nathaniel McCallum [Sat, 7 Aug 2021 15:17:03 +0000 (11:17 -0400)]
Fix naked function test run on non-x86_64

2 years agoChange proc_macro::Diagnostics docs
Klim Tsoutsman [Sat, 7 Aug 2021 03:46:58 +0000 (13:46 +1000)]
Change proc_macro::Diagnostics docs

Add links

Fit 100-character limit

2 years agoAuto merge of #87810 - devnexen:haiku_os_simpl, r=Mark-Simulacrum
bors [Sat, 7 Aug 2021 12:44:09 +0000 (12:44 +0000)]
Auto merge of #87810 - devnexen:haiku_os_simpl, r=Mark-Simulacrum

current_exe haiku code path simplification all of these part of libc

2 years agoFix intra doc link in hidden doc of Iterator::__iterator_get_unchecked
Frank Steffahn [Sat, 7 Aug 2021 11:42:15 +0000 (13:42 +0200)]
Fix intra doc link in hidden doc of Iterator::__iterator_get_unchecked

2 years agoDocument that fs::read_dir skips . and ..
Timotej Lazar [Sat, 7 Aug 2021 08:14:41 +0000 (10:14 +0200)]
Document that fs::read_dir skips . and ..

2 years agoAuto merge of #87796 - nielx:fix/socket2-0.4.1, r=Mark-Simulacrum
bors [Sat, 7 Aug 2021 05:33:21 +0000 (05:33 +0000)]
Auto merge of #87796 - nielx:fix/socket2-0.4.1, r=Mark-Simulacrum

Update socket2 dependency from 0.4.0 to 0.4.1

This update contains a fix for building the tools that depend on this package on Haiku (tier 3).

2 years agoAuto merge of #87408 - kornelski:try_reserve_error, r=yaahc
bors [Sat, 7 Aug 2021 01:26:15 +0000 (01:26 +0000)]
Auto merge of #87408 - kornelski:try_reserve_error, r=yaahc

Hide allocator details from TryReserveError

I think there's [no need for TryReserveError to carry detailed information](https://github.com/rust-lang/rust/issues/48043#issuecomment-825139280), but I wouldn't want that issue to delay stabilization of the `try_reserve` feature.

So I'm proposing to stabilize `try_reserve` with a `TryReserveError` as an opaque structure, and if needed, expose error details later.

This PR moves the `enum` to an unstable inner `TryReserveErrorKind` that lives under a separate feature flag. `TryReserveErrorKind` could possibly be left as an implementation detail forever, and the `TryReserveError` get methods such as `allocation_size() -> Option<usize>` or `layout() -> Option<Layout>` instead, or the details could be dropped completely to make try-reserve errors just a unit struct, and thus smaller and cheaper.

2 years agoFix small typo
Noah Lev [Fri, 6 Aug 2021 23:43:55 +0000 (16:43 -0700)]
Fix small typo

The closing backtick was outside the closing bracket,
which is why the intra-doc link wasn't working.

2 years agoFix typo -- "The" -> "They"
await Marsha [Fri, 6 Aug 2021 23:40:36 +0000 (18:40 -0500)]
Fix typo -- "The" -> "They"

I was reading through source code to try to learn more about the language and how to make the most of it when I ran into a small typo, so I figured I'd offer up a fix! I'm pretty new now, but hopefully I can offer up more substantial changes later. :D

2 years agoAuto merge of #87774 - camelid:process-typo, r=jyn514
bors [Fri, 6 Aug 2021 22:42:25 +0000 (22:42 +0000)]
Auto merge of #87774 - camelid:process-typo, r=jyn514

Fix typo

Add missing "by".

2 years agoPassWrapper: handle move of OptimizationLevel class out of PassBuilder
Augie Fackler [Thu, 5 Aug 2021 16:13:58 +0000 (12:13 -0400)]
PassWrapper: handle move of OptimizationLevel class out of PassBuilder

This is the first build break of the LLVM 14 cycle, and was caused by
https://reviews.llvm.org/D107025. Mercifully an easy fix.

2 years agoAuto merge of #87822 - JohnTitor:rollup-kxojii0, r=JohnTitor
bors [Fri, 6 Aug 2021 18:23:14 +0000 (18:23 +0000)]
Auto merge of #87822 - JohnTitor:rollup-kxojii0, r=JohnTitor

Rollup of 7 pull requests

Successful merges:

 - #85807 (bootstrap: Disable initial-exec TLS model on powerpc)
 - #87761 (Fix overflow in rustc happening if the `err_count()` is reduced in a stage.)
 - #87775 (Add hint for unresolved associated trait items if the trait has a single item)
 - #87779 (Remove special case for statement `NodeId` assignment)
 - #87787 (Use `C-unwind` ABI for `__rust_start_panic` in `panic_abort`)
 - #87809 (Fix typo in the ptr documentation)
 - #87816 (Sync rustc_codegen_cranelift)

Failed merges:

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

2 years agoReplace read_to_string with read_line in Stdin example
Elichai Turkel [Fri, 6 Aug 2021 15:59:02 +0000 (18:59 +0300)]
Replace read_to_string with read_line in Stdin example

2 years agoRollup merge of #87816 - bjorn3:sync_cg_clif-2021-08-06, r=bjorn3
Yuki Okushi [Fri, 6 Aug 2021 16:46:37 +0000 (01:46 +0900)]
Rollup merge of #87816 - bjorn3:sync_cg_clif-2021-08-06, r=bjorn3

Sync rustc_codegen_cranelift

05677b6bd6c938ed760835d9b1f6514992654ae3 removes two assertions that should have been removed in https://github.com/rust-lang/rust/pull/87515. They are no longer correct and trigger while compiling the sysroot.

r? `@ghost`

`@rustbot` label +A-codegen +A-cranelift +T-compiler

2 years agoRollup merge of #87809 - InnovativeInventor:pointer-typo, r=dtolnay
Yuki Okushi [Fri, 6 Aug 2021 16:46:36 +0000 (01:46 +0900)]
Rollup merge of #87809 - InnovativeInventor:pointer-typo, r=dtolnay

Fix typo in the ptr documentation

Spotted a minor typo in the docs ;). Pointers are cool!

2 years agoRollup merge of #87787 - hyd-dev:c-unwind, r=RalfJung
Yuki Okushi [Fri, 6 Aug 2021 16:46:35 +0000 (01:46 +0900)]
Rollup merge of #87787 - hyd-dev:c-unwind, r=RalfJung

Use `C-unwind` ABI for `__rust_start_panic` in `panic_abort`

The function originally has `C` ABI but is called using `C-unwind` ABI in `std`:
https://github.com/rust-lang/rust/blob/d4ad1cfc63ba5824196bfb2370451ddb5af2e020/library/std/src/panicking.rs#L49-L54
Which might be [problematic](https://github.com/rust-lang/miri/pull/1745#discussion_r596096876) and triggers this [Miri error](https://github.com/rust-lang/rust/issues/87778#issuecomment-893306222):
```
error: Undefined Behavior: calling a function with ABI C using caller ABI C-unwind
   --> /home/hyd-dev/.rustup/toolchains/miri/lib/rustlib/src/rust/library/std/src/panicking.rs:672:9
    |
672 |         __rust_start_panic(obj)
    |         ^^^^^^^^^^^^^^^^^^^^^^^ calling a function with ABI C using caller ABI C-unwind
    |
    = 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
```
Changing the ABI of the function to `C-unwind` fixes the error above.

2 years agoRollup merge of #87779 - Aaron1011:stmt-ast-id, r=petrochenkov
Yuki Okushi [Fri, 6 Aug 2021 16:46:34 +0000 (01:46 +0900)]
Rollup merge of #87779 - Aaron1011:stmt-ast-id, r=petrochenkov

Remove special case for statement `NodeId` assignment

We now let `noop_flat_map_stmt` assign `NodeId`s (via `visit_id`),
just as we do for other AST nodes.

2 years agoRollup merge of #87775 - Kobzol:single-associated-item-hint, r=oli-obk
Yuki Okushi [Fri, 6 Aug 2021 16:46:33 +0000 (01:46 +0900)]
Rollup merge of #87775 - Kobzol:single-associated-item-hint, r=oli-obk

Add hint for unresolved associated trait items if the trait has a single item

This PR introduces a special-cased hint for unresolved trait items paths. It is shown if:
- the path was not resolved to any existing trait item
- and no existing trait item's name was reasonably close with regard to edit distance
- and the trait only has a single item in the corresponding namespace

I didn't know where I should put tests, therefore so far I just managed to bless two existing tests. I would be glad for hints where should tests for a hint like this be created, how should they be named (with reference to the original issue?) and what tests should I create (is it enough to test it just for types? or create separate tests also for functions and constants?).

It could also be turned into a machine applicable suggestion I suppose.

This is my first `rustc` PR, so please go easy on me :)

Fixes: https://github.com/rust-lang/rust/issues/87638
2 years agoRollup merge of #87761 - rusticstuff:rustc_error_overflow, r=Mark-Simulacrum
Yuki Okushi [Fri, 6 Aug 2021 16:46:32 +0000 (01:46 +0900)]
Rollup merge of #87761 - rusticstuff:rustc_error_overflow, r=Mark-Simulacrum

Fix overflow in rustc happening if the `err_count()` is reduced in a stage.

This can happen if stashed diagnostics are removed or replaced with fewer errors. The semantics stay the same if built without overflow checks. Fixes #84219.

Background: I came across this independently by running `RUSTFLAGS="-C overflow-checks=on" ./x.py test`. Fixing this will allow us to move on and find further overflow errors with testing or fuzzing.

2 years agoRollup merge of #85807 - glaubitz:powerpc-disable-initial-exec-tls, r=Mark-Simulacrum
Yuki Okushi [Fri, 6 Aug 2021 16:46:31 +0000 (01:46 +0900)]
Rollup merge of #85807 - glaubitz:powerpc-disable-initial-exec-tls, r=Mark-Simulacrum

bootstrap: Disable initial-exec TLS model on powerpc

Fixes #81334.

2 years agoAuto merge of #87784 - rusticstuff:bootstrap_config_overflow_checks, r=Mark-Simulacrum
bors [Fri, 6 Aug 2021 15:35:01 +0000 (15:35 +0000)]
Auto merge of #87784 - rusticstuff:bootstrap_config_overflow_checks, r=Mark-Simulacrum

Add config.toml options for enabling overflow checks in rustc and std

The names are `overflow-checks` and `overflow-checks-std` and they work similar to  `debug-assertions` and `debug-assertions-std`. Once added we can measure how big the performance impact actually is and maybe enable them for CI tests.

Enabling them already makes two ui tests fail:
```
failures:
    [ui] ui/parser/item-free-const-no-body-semantic-fail.rs
    [ui] ui/parser/item-free-static-no-body-semantic-fail.rs
```
(See #84219 and #87761.)

2 years agoRemove special case for statement `NodeId` assignment
Aaron Hill [Thu, 5 Aug 2021 00:41:13 +0000 (19:41 -0500)]
Remove special case for statement `NodeId` assignment

We now let `noop_flat_map_stmt` assign `NodeId`s (via `visit_id`),
just as we do for other AST nodes.

2 years agoMerge commit '05677b6bd6c938ed760835d9b1f6514992654ae3' into sync_cg_clif-2021-08-06
bjorn3 [Fri, 6 Aug 2021 14:26:56 +0000 (16:26 +0200)]
Merge commit '05677b6bd6c938ed760835d9b1f6514992654ae3' into sync_cg_clif-2021-08-06

2 years agouwu
Ellen [Fri, 6 Aug 2021 14:17:21 +0000 (15:17 +0100)]
uwu

2 years ago*sprinkles some dust everywhere*
Ellen [Fri, 6 Aug 2021 13:55:53 +0000 (14:55 +0100)]
*sprinkles some dust everywhere*

2 years agoencode `generics_of` of fields and ty params
Ellen [Fri, 6 Aug 2021 13:20:59 +0000 (14:20 +0100)]
encode `generics_of` of fields and ty params

2 years agoAuto merge of #87777 - the8472:fix-mir-max-rss, r=oli-obk,joshtriplett
bors [Fri, 6 Aug 2021 12:11:30 +0000 (12:11 +0000)]
Auto merge of #87777 - the8472:fix-mir-max-rss, r=oli-obk,joshtriplett

Use zeroed allocations in the mir interpreter instead eagerly touching the memory

#86255 introduced a 30% regression in [page faults](https://perf.rust-lang.org/compare.html?start=64ae15ddd3f3cca7036ab2b2f3a6b130b62af4da&end=39e20f1ae5f13451eb35247808d6a2527cb7d060&stat=faults
) and a 3% regression in [max-rss](https://perf.rust-lang.org/index.html?start=2021-07-01&end=&absolute=false&stat=max-rss) in the ctfe-stress benchmarks.
That's most likely happened because it separated allocation from initialization of the vec which defeats the zero-optimization.

Currently there's no allocation API that is fallible, zeroing and returns a slice, so this PR introduces one and then uses that to solve the problem. In principle `vec.resize(len, 0)` could be optimized to use `alloc::grow_zeroed` where appropriate but that would require new specializations and new plumbing in `RawVec`.

2 years agoAdd options for enabling overflow checks in rustc and std.
Hans Kratz [Thu, 5 Aug 2021 05:28:40 +0000 (05:28 +0000)]
Add options for enabling overflow checks in rustc and std.

The options are `overflow-checks` and `overflow-checks-std`
defaulting to false.

2 years agoAdd hint for unresolved associated trait items if the trait has a single item
Jakub Beránek [Wed, 4 Aug 2021 21:29:30 +0000 (23:29 +0200)]
Add hint for unresolved associated trait items if the trait has a single item

2 years agocurrent_exe haiku code path simplification all of these part of libc
David Carlier [Fri, 6 Aug 2021 06:32:36 +0000 (07:32 +0100)]
current_exe haiku code path simplification all of these part of libc

2 years agoAuto merge of #87808 - JohnTitor:rollup-qqp79xs, r=JohnTitor
bors [Fri, 6 Aug 2021 05:02:35 +0000 (05:02 +0000)]
Auto merge of #87808 - JohnTitor:rollup-qqp79xs, r=JohnTitor

Rollup of 9 pull requests

Successful merges:

 - #87561 (thread set_name haiku implementation.)
 - #87715 (Add long error explanation for E0625)
 - #87727 (explicit_generic_args_with_impl_trait: fix min expected number of generics)
 - #87742 (Validate FFI-safety warnings on naked functions)
 - #87756 (Add back -Zno-profiler-runtime)
 - #87759 (Re-use std::sealed::Sealed in os/linux/process.)
 - #87760 (Promote `aarch64-apple-ios-sim` to Tier 2)
 - #87770 (permit drop impls with generic constants in where clauses)
 - #87780 (alloc: Use intra doc links for the reserve function)

Failed merges:

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

2 years agoFix typo in the ptr documentation
Max Fan [Fri, 6 Aug 2021 02:50:56 +0000 (22:50 -0400)]
Fix typo in the ptr documentation

2 years agoRollup merge of #87780 - est31:intra_doc_links, r=jyn514
Yuki Okushi [Fri, 6 Aug 2021 02:21:36 +0000 (11:21 +0900)]
Rollup merge of #87780 - est31:intra_doc_links, r=jyn514

alloc: Use intra doc links for the reserve function

The sentence exists to highlight the existence of a
performance footgun of repeated calls of the
reserve_exact function.

2 years agoRollup merge of #87770 - BoxyUwU:cec-drop-impl, r=lcnr
Yuki Okushi [Fri, 6 Aug 2021 02:21:35 +0000 (11:21 +0900)]
Rollup merge of #87770 - BoxyUwU:cec-drop-impl, r=lcnr

permit drop impls with generic constants in where clauses

Fixes #79248

`==` is not sufficient to check for equality between unevaluated consts which causes the above issue because the const in `[(); N - 1]:` on the impl and the const in `[(); N - 1]:` on the struct def are not seen as equal. Any predicate that can contain an unevaluated const cant use `==` here as it will cause us to incorrectly emit an error.

I dont know much about chalk but it seems like we ought to be relating the `TypeWellFormedFromEnv` instead of `==` as it contains a `Ty` so I added that too...

r? ``````@lcnr``````

2 years agoRollup merge of #87760 - badboy:promote-ios-sim-target, r=Mark-Simulacrum
Yuki Okushi [Fri, 6 Aug 2021 02:21:34 +0000 (11:21 +0900)]
Rollup merge of #87760 - badboy:promote-ios-sim-target, r=Mark-Simulacrum

Promote `aarch64-apple-ios-sim` to Tier 2

As per https://github.com/rust-lang/compiler-team/issues/428 this target becomes Tier 2.

---

I tested that the latest nightly has the target and I'm already building my project with that on CI and locally.

2 years agoRollup merge of #87759 - m-ou-se:linux-process-sealed, r=jyn514
Yuki Okushi [Fri, 6 Aug 2021 02:21:33 +0000 (11:21 +0900)]
Rollup merge of #87759 - m-ou-se:linux-process-sealed, r=jyn514

Re-use std::sealed::Sealed in os/linux/process.

This uses `std::sealed::Sealed` in `std::os::linux::process` instead of defining new `Sealed` traits there.

2 years agoRollup merge of #87756 - Amanieu:no_profiler_runtime, r=jackh726
Yuki Okushi [Fri, 6 Aug 2021 02:21:32 +0000 (11:21 +0900)]
Rollup merge of #87756 - Amanieu:no_profiler_runtime, r=jackh726

Add back -Zno-profiler-runtime

This was removed by #85284 in favor of `-Zprofiler-runtime=<name>`.However the suggested `-Zprofiler-runtime=None` doesn't work because`None` is treated as a crate name.

2 years agoRollup merge of #87742 - npmccallum:naked_ffi, r=Amanieu
Yuki Okushi [Fri, 6 Aug 2021 02:21:31 +0000 (11:21 +0900)]
Rollup merge of #87742 - npmccallum:naked_ffi, r=Amanieu

Validate FFI-safety warnings on naked functions

Test that FFI-safety warnings don't get accidentally dropped on naked
functions. The big picture is that if you implement a naked function
with the Rust ABI you'll get a warning. Further, if you implement a
naked function with a standardized ABI, but use non-FFI-safe types you
will still get a warning.

rust-lang/rfcs#2774
rust-lang/rfcs#2972

cc ``````@joshtriplett`````` ``````@Amanieu`````` ``````@haraldh``````

2 years agoRollup merge of #87727 - SkiFire13:fix-87718, r=jackh726
Yuki Okushi [Fri, 6 Aug 2021 02:21:30 +0000 (11:21 +0900)]
Rollup merge of #87727 - SkiFire13:fix-87718, r=jackh726

explicit_generic_args_with_impl_trait: fix min expected number of generics

Fixes #87718

The problem was that `synth_type_param_count` was already subtracted from `named_type_param_count`, so this ended up being subtracted again. This caused `expected_min` to overflow, and ultimately resulting in weird and wrong behaviour.

I've also added another test not present in the original issue but caused by the same bug.

2 years agoRollup merge of #87715 - bhgomes:long-explanation-E0625, r=GuillaumeGomez
Yuki Okushi [Fri, 6 Aug 2021 02:21:29 +0000 (11:21 +0900)]
Rollup merge of #87715 - bhgomes:long-explanation-E0625, r=GuillaumeGomez

Add long error explanation for E0625

For #61137.

2 years agoRollup merge of #87561 - devnexen:haiku_thread_build_fix, r=yaahc
Yuki Okushi [Fri, 6 Aug 2021 02:21:28 +0000 (11:21 +0900)]
Rollup merge of #87561 - devnexen:haiku_thread_build_fix, r=yaahc

thread set_name haiku implementation.

2 years agoAuto merge of #87462 - ibraheemdev:tidy-file-length-ignore-comment, r=Mark-Simulacrum
bors [Fri, 6 Aug 2021 02:07:01 +0000 (02:07 +0000)]
Auto merge of #87462 - ibraheemdev:tidy-file-length-ignore-comment, r=Mark-Simulacrum

Ignore comments in tidy-filelength

Ref https://github.com/rust-lang/rust/issues/60302#issuecomment-652402127

2 years agoAuto merge of #84176 - GuillaumeGomez:src-to-definition, r=jyn514
bors [Thu, 5 Aug 2021 22:13:32 +0000 (22:13 +0000)]
Auto merge of #84176 - GuillaumeGomez:src-to-definition, r=jyn514

Generate links to definition in rustdoc source code pages

## Description

This PR adds an option (disabled by default) to add links in the source code page on ident. So for for example:

```rust
mod other_module;
struct Foo;
fn bar() {}

fn x<T: other_module::Trait>(f: Foo, g: other_module::Whatever, t: &T) {
    let f: Foo = Foo;
    bar();
    f.some_method();
}
```

In the example (mostly in the `x` function), `other_module::Trait`, `Foo`, `other_module::Whatever`, `bar` and `some_method` are now links (and `other_module` at the top too).

In case there is a type coming from another crate, it'll link to its documentation page and not its definition (but you can then click on `[src]` so I guess it's fine).

Another important detail: I voluntarily didn't add links for primitive types. I think we can discuss about adding links on them or not in a later PR (adding the support for them would require only a few lines).

Here is a video summing up everything I wrote above:

https://user-images.githubusercontent.com/3050060/114622354-21307b00-9cae-11eb-834d-f6d8178a37bd.mp4

## Performance impact

So, on my computer, the performance remains more or less the same (which is quite surprising but that's a nice surprise). Here are the numbers:

Without the option:
 * core:  1m 21s
 * alloc: 26.78s
 * std: 27.30s
 * proc_macro: 4.50s

With source to definition links generation (I enabled by default the option):
 * core: 1m 25s
 * alloc: 25.76s
 * std: 27.07s
 * proc_macro: 4.66s

So no real change here (again, I'm very surprised by this fact).

For the size of the generated source files (only taking into account the `src` folder here since it's the only one impacted) by running `du -shc .` (when I am in the source folder).

Without the option: 11.939 MB
With the option: 12.611 MB

So not a big change here either. In all those docs, I ran `grep -nR '<a class=' . | wc -l` and got 43917. So there are quite a lot of links added. :)

cc `@rust-lang/rustdoc`
r? `@jyn514`

2 years agoFix URL conflict for std type
Guillaume Gomez [Thu, 5 Aug 2021 21:33:43 +0000 (23:33 +0200)]
Fix URL conflict for std type

2 years agoRemove LightSpan and use Span directly
Guillaume Gomez [Mon, 2 Aug 2021 15:44:04 +0000 (17:44 +0200)]
Remove LightSpan and use Span directly

2 years agoRemove warnings/errors from compiler when using typeck_body in rustdoc span map builder
Guillaume Gomez [Wed, 21 Jul 2021 12:53:13 +0000 (14:53 +0200)]
Remove warnings/errors from compiler when using typeck_body in rustdoc span map builder

2 years ago* Rename LightSpan::empty into LightSpan::dummy
Guillaume Gomez [Tue, 13 Jul 2021 13:28:43 +0000 (15:28 +0200)]
* Rename LightSpan::empty into LightSpan::dummy
* Add Classifier::new_light_span to wrap LightSpan::new_in_file constructor

2 years agoAdd missing root_path when generating links using href
Guillaume Gomez [Sat, 12 Jun 2021 20:08:43 +0000 (22:08 +0200)]
Add missing root_path when generating links using href

2 years agoAdd documentation and FIXME
Guillaume Gomez [Thu, 20 May 2021 08:42:18 +0000 (10:42 +0200)]
Add documentation and FIXME

2 years agoFix invalid generation of HTML in highlight
Guillaume Gomez [Wed, 12 May 2021 15:29:51 +0000 (17:29 +0200)]
Fix invalid generation of HTML in highlight

2 years agoformatting
Guillaume Gomez [Fri, 7 May 2021 11:00:53 +0000 (13:00 +0200)]
formatting

2 years agoUse rustdoc Span in LinkFromSrc directly
Guillaume Gomez [Wed, 5 May 2021 12:48:41 +0000 (14:48 +0200)]
Use rustdoc Span in LinkFromSrc directly

2 years agoMove extra arguments for highlight URL generation into a new ContextInfo struct for...
Guillaume Gomez [Wed, 5 May 2021 12:19:51 +0000 (14:19 +0200)]
Move extra arguments for highlight URL generation into a new ContextInfo struct for better readability

2 years agoWrap the span_map tuple index into a type called "LightSpan"
Guillaume Gomez [Tue, 4 May 2021 19:41:45 +0000 (21:41 +0200)]
Wrap the span_map tuple index into a type called "LightSpan"

2 years agoImprove code readability
Guillaume Gomez [Tue, 4 May 2021 11:52:53 +0000 (13:52 +0200)]
Improve code readability

2 years ago* Rename Span::from_rustc_span to Span::new
Guillaume Gomez [Thu, 22 Apr 2021 13:14:49 +0000 (15:14 +0200)]
* Rename Span::from_rustc_span to Span::new
* Rename Span::wrap to Span::wrap_raw
* Improve documentation for Span::wrap_raw

2 years ago* Rename 'move_span' into 'local_span_to_global_span'
Guillaume Gomez [Tue, 20 Apr 2021 15:42:06 +0000 (17:42 +0200)]
* Rename 'move_span' into 'local_span_to_global_span'
* Add documentation on new arguments/functions

2 years agoUnderline source code links on hover
Guillaume Gomez [Wed, 14 Apr 2021 11:26:49 +0000 (13:26 +0200)]
Underline source code links on hover

2 years agoUpdate rustdoc tests
Guillaume Gomez [Tue, 13 Apr 2021 22:52:35 +0000 (00:52 +0200)]
Update rustdoc tests

2 years agoGenerate links for modules as well
Guillaume Gomez [Tue, 13 Apr 2021 20:51:56 +0000 (22:51 +0200)]
Generate links for modules as well

2 years agoAdd test for source code pages URLs
Guillaume Gomez [Tue, 13 Apr 2021 20:03:29 +0000 (22:03 +0200)]
Add test for source code pages URLs

2 years agoGenerate links for methods as well
Guillaume Gomez [Tue, 13 Apr 2021 18:00:36 +0000 (20:00 +0200)]
Generate links for methods as well

2 years agoEnsure that --generate-link-to-definition is only used with HTML output and is unstable
Guillaume Gomez [Tue, 4 May 2021 09:51:11 +0000 (11:51 +0200)]
Ensure that --generate-link-to-definition is only used with HTML output and is unstable

2 years agoAdd an option for the source code link generation
Guillaume Gomez [Tue, 13 Apr 2021 13:52:41 +0000 (15:52 +0200)]
Add an option for the source code link generation