Commit Graph

108890 Commits

Author SHA1 Message Date
David Wood 59e621c196
interp: needs_subst -> ensure_monomorphic_enough
This commit adds a `ensure_monomorphic_enough` utility function which
checks whether a type needs substitution, but only for parameters
that the `unused_generic_params` query considers used.

`ensure_monomorphic_enough` is then used throughout interpret where
`needs_subst` checks previously existed (in particular, for some
pointer casts and for reflection intrinsics more precise).

Signed-off-by: David Wood <david@davidtw.co>
2020-07-31 16:36:42 +01:00
bors 0820e54a8a Auto merge of #74685 - ehuss:update-cargo, r=ehuss
Update cargo

21 commits in 43cf77395cad5b79887b20b7cf19d418bbd703a9..aa6872140ab0fa10f641ab0b981d5330d419e927
2020-07-13 17:35:42 +0000 to 2020-07-23 13:46:27 +0000
- Update features set in CI. (rust-lang/cargo#8530)
- Stabilize -Z crate-versions (rust-lang/cargo#8509)
- Fix typo in docs (rust-lang/cargo#8529)
- Remove unused CompileMode::all_modes (rust-lang/cargo#8526)
- Mask out system core.autocrlf settings before resetting git repos (rust-lang/cargo#8523)
- Flag git zlib errors as spurious errors (rust-lang/cargo#8520)
- Fix the help display for the target-triple option (rust-lang/cargo#8515)
- Check workspace member existence as dir. (rust-lang/cargo#8511)
- Bump to 0.48.0, update changelog (rust-lang/cargo#8508)
- Apply workspace.exclude to workspace.default-members. (rust-lang/cargo#8485)
- Fix nightly tests for intra-doc links. (rust-lang/cargo#8528)
- doc: Replace "regenerate" with "revoke" for API tokens (rust-lang/cargo#8510)
- Add back Manifest::targets_mut (rust-lang/cargo#8494)
- Build host dependencies with opt-level 0 by default (rust-lang/cargo#8500)
- Fix freshness checks for build scripts on renamed dirs (rust-lang/cargo#8497)
- Add a `-Zbuild-std-features` flag (rust-lang/cargo#8490)
- clippy cleanups (rust-lang/cargo#8495)
- Fix self-publish script. (rust-lang/cargo#8492)
- Ensure `unstable.build-std` works like `-Zbuild-std` (rust-lang/cargo#8491)
- Make `cargo metadata` output deterministic (rust-lang/cargo#8489)
- Switch to github actions (rust-lang/cargo#8467)
2020-07-23 20:15:28 +00:00
Eric Huss 76103f1d15 Update cargo 2020-07-23 08:28:50 -07:00
bors 39a295f526 Auto merge of #74509 - matthewjasper:empty-verify, r=nikomatsakis
Use `ReEmpty(U0)` as the implicit region bound in typeck

Fixes #74429

r? @nikomatsakis
2020-07-23 13:43:42 +00:00
bors 371917ab21 Auto merge of #74613 - Mark-Simulacrum:revert-gimli, r=nnethercote
Revert libbacktrace -> gimli

This reverts 4cbd265c11 028f8d7b85 13db3cc1e8 d7a36d8964 (and technically 79673d3009 but it's made empty by previous reverts).

The current plan is to land this PR as a temporary change, so that we can get a better handle on the regressions introduced by it. Trying to fix/examine them in master is difficult, and we want to be better able to evaluate them without impact to other PRs being landed in the mean time.

That said, it is currently *my* belief that gimli, in one form or another, will need to land sometime soon. I think it's quite likely that it may slip a week or two, but I would personally push for re-landing it then "regardless" of the regressions. We should try to focus efforts on understanding and removing as much of the performance impact as possible, as everyone pretty much agrees that it should be quite minimal (and entirely in the linker, basically).

r? @nnethercote
2020-07-23 11:14:48 +00:00
bors 2bbfa02b1b Auto merge of #74667 - Manishearth:rollup-s6k59sw, r=Manishearth
Rollup of 8 pull requests

Successful merges:

 - #74141 (libstd/libcore: fix various typos)
 - #74490 (add a Backtrace::disabled function)
 - #74548 (one more Path::with_extension example, to demonstrate behavior)
 - #74587 (Prefer constant over function)
 - #74606 (Remove Linux workarounds for missing CLOEXEC support)
 - #74637 (Make str point to primitive page)
 - #74654 (require type defaults to be after const generic parameters)
 - #74659 (Improve codegen for unchecked float casts on wasm)

Failed merges:

r? @ghost
2020-07-23 08:56:45 +00:00
Manish Goregaokar 8f02f2c1ab
Rollup merge of #74659 - alexcrichton:wasm-codegen, r=varkor
Improve codegen for unchecked float casts on wasm

This commit improves codegen for unchecked casts on WebAssembly targets
to use the singluar `iNN.trunc_fMM_{u,s}` instructions. Previously rustc
would codegen a bare `fptosi` and `fptoui` for float casts but for
WebAssembly targets the codegen for these instructions is quite large.
This large codegen is due to the fact that LLVM can speculate these
instructions so the trapping behavior of WebAssembly needs to be
protected against in case they're speculated.

The change here is to update the codegen for the unchecked cast
intrinsics to have a wasm-specific case where they call the appropriate
LLVM intrinsic to generate the right wasm instruction. The intrinsic is
explicitly opting-in to undefined behavior so a trap here for
out-of-bounds inputs on wasm should be acceptable.

cc #73591
2020-07-23 00:42:20 -07:00
Manish Goregaokar e9d4134467
Rollup merge of #74654 - lcnr:default-no-more, r=varkor
require type defaults to be after const generic parameters

From current discussions it seems like the goal here is for type and const parameters to be unordered and allow things like `struct Foo<const N: usize, T = u32>(T)` and `struct Foo<T, const N: usize = 7>` this way.

Note: This means that using `min_const_generics` it will not be possible for an adt to have both type defaults and const parameters.

closes #70471

r? @varkor @eddyb
2020-07-23 00:42:18 -07:00
Manish Goregaokar 9f2ef3f62d
Rollup merge of #74637 - lzutao:str-primitive-links, r=jyn514
Make str point to primitive page

Currently str in String page points to str module page.
2020-07-23 00:42:16 -07:00
Manish Goregaokar 8909ac97d5
Rollup merge of #74606 - cuviper:cloexec, r=sfackler
Remove Linux workarounds for missing CLOEXEC support

Now that #74163 updated the minimum Linux kernel to 2.6.32, we can
assume the availability of APIs that open file descriptors that are
already set to close on exec, including the flags `O_CLOEXEC`,
`SOCK_CLOEXEC`, and `F_DUPFD_CLOEXEC`.

Closes #74519.
2020-07-23 00:42:14 -07:00
Manish Goregaokar bea2eedcb5
Rollup merge of #74587 - lzutao:consts, r=dtolnay
Prefer constant over function

Just that I prefer constants over functions that can be made const.
2020-07-23 00:42:12 -07:00
Manish Goregaokar 5629223782
Rollup merge of #74548 - tshepang:one-more-example, r=dtolnay
one more Path::with_extension example, to demonstrate behavior
2020-07-23 00:42:10 -07:00
Manish Goregaokar f98c77c8b6
Rollup merge of #74490 - yaahc:disabled-bt, r=dtolnay
add a Backtrace::disabled function

Based upon @dtolnay's suggestion here: https://github.com/dtolnay/anyhow/pull/97#issuecomment-647172942
2020-07-23 00:42:07 -07:00
Manish Goregaokar 9be1099107
Rollup merge of #74141 - euclio:typos, r=steveklabnik
libstd/libcore: fix various typos
2020-07-23 00:42:01 -07:00
bors fcac11993c Auto merge of #74611 - Mark-Simulacrum:revert-74069-bad-niche, r=eddyb
Revert "Compare tagged/niche-filling layout and pick the best one"

Reverts rust-lang/rust#74069. It caused a performance regression, see https://github.com/rust-lang/rust/pull/74069#issuecomment-662166827. perf: https://perf.rust-lang.org/compare.html?start=d3df8512d2c2afc6d2e7d8b5b951dd7f2ad77b02&end=cfade73820883adf654fe34fd6b0b03a99458a51

r? @eddyb

cc @nnethercote
2020-07-23 07:11:01 +00:00
Bastian Kauschke 2f565967b0 tweak wording
Co-authored-by: varkor <github@varkor.com>
2020-07-23 08:14:39 +02:00
Lzu Tao 0de7fade10 Prefer constant over function 2020-07-23 02:49:40 +00:00
Lzu Tao d19b12df41 Prefer type@str 2020-07-23 02:42:37 +00:00
Lzu Tao 47d0d2ff63 Make str point to primitive page 2020-07-23 02:37:17 +00:00
bors e8b55a4ad2 Auto merge of #74662 - Manishearth:rollup-jdt7t71, r=Manishearth
Rollup of 9 pull requests

Successful merges:

 - #73783 (Detect when `'static` obligation might come from an `impl`)
 - #73868 (Advertise correct stable version for const control flow)
 - #74460 (rustdoc: Always warn when linking from public to private items)
 - #74538 (Guard against non-monomorphized type_id intrinsic call)
 - #74541 (Add the aarch64-apple-darwin target )
 - #74600 (Enable perf try builder)
 - #74618 (Do not ICE on assoc type with bad placeholder)
 - #74631 (rustc_target: Add a target spec option for disabling `--eh-frame-hdr`)
 - #74643 (build: Remove unnecessary `cargo:rerun-if-env-changed` annotations)

Failed merges:

r? @ghost
2020-07-23 00:37:58 +00:00
Jane Lusby 50347b84dd
Update src/libstd/backtrace.rs
Co-authored-by: David Tolnay <dtolnay@gmail.com>
2020-07-22 17:19:02 -07:00
Tshepang Lekhonkhobe 83094ea11a
one more Path::with_extension example, to demonstrate behavior 2020-07-22 16:39:45 -07:00
Josh Stone ae06e13b8d Move the pipe2 call behind a hard target `#[cfg]` 2020-07-22 16:38:58 -07:00
Manish Goregaokar b32383ca90
Rollup merge of #74643 - petrochenkov:noenvrerun, r=Mark-Simulacrum
build: Remove unnecessary `cargo:rerun-if-env-changed` annotations

... and a couple of related cleanups.

rustc and cargo now track the majority of env var dependencies automatically (https://github.com/rust-lang/cargo/pull/8421), so the annotations are no longer necessary.
2020-07-22 16:34:50 -07:00
Manish Goregaokar 7b28e7bf6b
Rollup merge of #74631 - petrochenkov:ehdr2, r=jonas-schievink
rustc_target: Add a target spec option for disabling `--eh-frame-hdr`

Disable `--eh-frame-hdr` for targets that use an `ld`-like linker, but don't support that option.
Do it through a target spec option rather than through hard-coding in `linker.rs`.
The option is still enabled by default though.

cc https://github.com/rust-lang/rust/pull/73564
Fixes https://github.com/rust-lang/rust/pull/73564#issuecomment-657011004
Fixes https://github.com/rust-lang/rust/pull/74625
Fixes https://github.com/rust-embedded/msp430-rt/issues/12
2020-07-22 16:34:48 -07:00
Manish Goregaokar 9ac2af1dfc
Rollup merge of #74618 - JohnTitor:no-more-bad-placeholder, r=estebank
Do not ICE on assoc type with bad placeholder

Fixes #74612
r? @estebank
2020-07-22 16:34:46 -07:00
Manish Goregaokar 0edf2e618d
Rollup merge of #74600 - Mark-Simulacrum:try-perf, r=pietroalbini
Enable perf try builder

This adds a dedicated branch for perf to use for CI, intended to allow perf to
enqueue builds without needing to use bors. bors is great, but bors requires an
open PR to work, and we want to invoke perf on closed PRs sometimes (in
particular, rollups).
2020-07-22 16:34:44 -07:00
Manish Goregaokar 8114dc7a4a
Rollup merge of #74541 - shepmaster:aarch64-apple-darwin-target, r=nagisa
Add the aarch64-apple-darwin target

This is a basic copy-paste-modify from the existing
x86_64-apple-darwin target.
2020-07-22 16:34:43 -07:00
Manish Goregaokar 4828895cd9
Rollup merge of #74538 - nbdd0121:issue-73976, r=lcnr
Guard against non-monomorphized type_id intrinsic call

This PR checks whether the type is sufficient monomorphized when calling type_id or type_name intrinsics. If the type is not sufficiently monomorphized, e.g. used in a pattern, the code will be rejected.

Fixes #73976
2020-07-22 16:34:41 -07:00
Manish Goregaokar 02e350f5a2
Rollup merge of #74460 - dennis-hamester:rustdoc-warn-pub-to-priv, r=jyn514
rustdoc: Always warn when linking from public to private items

Change the logic such that linking from a public to a private item always triggers `intra_doc_link_resolution_failure`.
Previously, the warning was not emitted when `--document-private-items` is passed.

This came up during the discussion in https://github.com/rust-lang/rust/pull/74147#discussion_r452597901.
2020-07-22 16:34:39 -07:00
Manish Goregaokar da449a9c1b
Rollup merge of #73868 - ecstatic-morse:fix-stable-version, r=jonas-schievink
Advertise correct stable version for const control flow

#72437 was opened before the 1.45 release but merged afterwards. These will be stable in 1.46.
2020-07-22 16:34:37 -07:00
Manish Goregaokar fe9babbaed
Rollup merge of #73783 - estebank:impl-dyn-trait-static-lifetime, r=nikomatsakis
Detect when `'static` obligation might come from an `impl`

Partly address #71341.
2020-07-22 16:34:36 -07:00
Alex Crichton 618aeec51f Improve codegen for unchecked float casts on wasm
This commit improves codegen for unchecked casts on WebAssembly targets
to use the singluar `iNN.trunc_fMM_{u,s}` instructions. Previously rustc
would codegen a bare `fptosi` and `fptoui` for float casts but for
WebAssembly targets the codegen for these instructions is quite large.
This large codegen is due to the fact that LLVM can speculate these
instructions so the trapping behavior of WebAssembly needs to be
protected against in case they're speculated.

The change here is to update the codegen for the unchecked cast
intrinsics to have a wasm-specific case where they call the appropriate
LLVM intrinsic to generate the right wasm instruction. The intrinsic is
explicitly opting-in to undefined behavior so a trap here for
out-of-bounds inputs on wasm should be acceptable.

cc #73591
2020-07-22 15:05:05 -07:00
bors 4a86573c6b Auto merge of #74404 - lcnr:ty-dep-path-cleanup-aaaaa, r=eddyb
remove some const arg in ty dep path boilerplate

followup to #74113, together with #74376, this closes #74360.

r? @eddyb
2020-07-22 21:50:21 +00:00
Bastian Kauschke a95e6bb916 require type defaults to be after const generic parameters
as if this is currently possible. HA!
2020-07-22 22:58:54 +02:00
Esteban Küber 889a4d9a0b Change error code number 2020-07-22 13:12:34 -07:00
Dennis Hamester c14641a814 rustdoc: Add explanation when linting against public to private item links
The additional note helps explaining why the lint was triggered and that
--document-private-items directly influences the link resolution.
2020-07-22 21:40:51 +02:00
Dennis Hamester ed53de029c rustdoc: Always warn when linking from public to private items
Change the logic such that linking from a public to a private item always
triggers intra_doc_link_resolution_failure. Previously, the warning was
not emitted when --document-private-items is passed.

Also don't rely anymore on the item's visibility, which would falsely trigger
the lint now that the check for --document-private-items is gone.
2020-07-22 21:36:30 +02:00
bors bbebe7351f Auto merge of #74633 - davidtwco:issue-74614-disable-polymorphisation, r=wesleywiser
Disable polymorphisation

Fixes #74614.

This PR disables polymorphisation to fix the regression in #74614 after investigation into the issue makes it clear that the fix won't be trivial. ~~I'll file an issue shortly to replace #74614 with the findings so far.~~ #74636 has been filed to track the fix of the underlying regression.

r? @eddyb
2020-07-22 19:34:20 +00:00
Esteban Küber 53d96b5159 Handle fully-qualified paths and add test cases 2020-07-22 12:25:55 -07:00
Esteban Küber 3712dfc677 Partially account for case where used method is from trait 2020-07-22 12:25:55 -07:00
Esteban Küber f80743712e Use `ty::Instance::resolve` to identify `'static` bound source 2020-07-22 12:25:55 -07:00
Esteban Küber 7bf39fa9d9 Further tweak wording of E0759 and introduce E0767 2020-07-22 12:25:54 -07:00
Esteban Küber 6bac3dbfc2 Add more context to diagnostic 2020-07-22 12:25:54 -07:00
Esteban Küber 4e08bab87d Increase accuracy of lifetime bound on trait object impl suggestion 2020-07-22 12:25:54 -07:00
Esteban Küber 6513148c14 Detect when `'static` obligation might come from an `impl`
Address #71341.
2020-07-22 12:25:54 -07:00
Vadim Petrochenkov 7be36a86f7 build: Avoid unnecessary build script reruns in libstd
Add a FIXME to build scripts in profiler_builtins
2020-07-22 20:06:37 +03:00
Vadim Petrochenkov 461c576457 build: Harden env var tracking in build scripts 2020-07-22 19:51:19 +03:00
Manish Goregaokar 05a24661a3
Rollup merge of #74635 - GuillaumeGomez:fix-tooltip-pos, r=Manishearth
Fix tooltip position if the documentation starts with a code block

Fixes #74321.

Before:

![before](https://user-images.githubusercontent.com/3050060/88188970-cf842400-cc38-11ea-839b-37e41656837d.png)

After:

![after](https://user-images.githubusercontent.com/3050060/88188981-d3b04180-cc38-11ea-8194-713ffe640d3a.png)

And in case there is text, it is not being applied:

![after-witness](https://user-images.githubusercontent.com/3050060/88189009-ddd24000-cc38-11ea-9f0a-61dfd0a0cbd0.png)

And on mobile it isn't needed so it's not "activated":

![Screenshot from 2020-07-22 17-17-43](https://user-images.githubusercontent.com/3050060/88194698-65bb4880-cc3f-11ea-8513-0043ccca8cfc.png)

r? @rust-lang/rustdoc
2020-07-22 09:29:17 -07:00
Manish Goregaokar 3de0de1ded
Rollup merge of #74589 - ehuss:update-books, r=ehuss
Update books

## reference

5 commits in 0ea7bc494f1289234d8800bb9185021e0ad946f0..b329ce37424874ad4db94f829a55807c6e21d2cb
2020-07-02 15:33:04 -0700 to 2020-07-20 08:54:08 -0700
- this '*' is unnecessary, and reduces readability (rust-lang-nursery/reference#853)
- Tiny typo fix (rust-lang-nursery/reference#849)
- Update const eval chapter to latest changes (rust-lang-nursery/reference#842)
- Document #[track_caller]. (rust-lang-nursery/reference#742)
- Document shebang restriction. (rust-lang-nursery/reference#823)

## book

2 commits in 84a31397b34f9d405df44f2899ff17a4828dba18..a914f2c7e5cdb771fa465de142381a51c53b580e
2020-07-04 10:50:18 -0500 to 2020-07-21 09:20:05 -0500
- Change misleading wording (rust-lang/book#2399)
- Improve wording to include Windows versions (rust-lang/book#2395)

## edition-guide

3 commits in 82bec5877c77cfad530ca11095db4456d757f668..bd6e4a9f59c5c1545f572266af77f5c7a5bad6d1
2020-06-03 08:56:02 -0500 to 2020-07-12 17:37:08 -0500
- update guide for 1.36 and 1.37 (rust-lang/edition-guide#217)
- Add contents for Rust 1.35 (rust-lang/edition-guide#216)
- update edition guide for Rust 1.34 (rust-lang/edition-guide#215)
2020-07-22 09:29:15 -07:00