Commit Graph

109853 Commits

Author SHA1 Message Date
Mazdak Farrokhzad
ecc4e2a647
Rollup merge of #70896 - cuviper:optional-chain, r=scottmcm
Implement Chain with Option fuses

The iterators are now "fused" with `Option` so we don't need separate state to track which part is already exhausted, and we may also get niche layout for `None`. We don't use the real `Fuse` adapter because its specialization for `FusedIterator` unconditionally descends into the iterator, and that could be expensive to keep revisiting stuff like nested chains. It also hurts compiler performance to add more iterator layers to `Chain`.

This change was inspired by the [proposal](https://internals.rust-lang.org/t/proposal-implement-iter-chain-using-fuse/12006) on the internals forum. This is an alternate to #70332, directly employing some of the same `Fuse` optimizations as #70366 and #70750.

r? @scottmcm
2020-04-09 05:29:43 +02:00
Mazdak Farrokhzad
cefee7bd9a
Rollup merge of #70868 - petrochenkov:linkorder, r=nagisa,mati865
rustc_codegen_ssa: Refactor construction of linker arguments

And add comments.

This PR doesn't reorder any linker arguments and therefore shouldn't contain any observable changes.

The next goal here is to
- Factor out order-independent linker arguments in the compiler code and in target specifications and pass them together. Such arguments generally apply to the whole linking session or the produced linking result rather to individual object files or libraries.
- Figure out where exactly among the remaining order-dependent arguments we should place customization points like `-C link-args` and `-Z pre-link-args`.
- Possibly provide command line opt-outs for options that are currently passed unconditionally (like CRT objects or arguments defined by the target spec).
- Document and stabilize the customization points that are not yet stable (https://github.com/rust-lang/rust/pull/70505).
2020-04-09 05:29:42 +02:00
Mazdak Farrokhzad
a209b4f447
Rollup merge of #70822 - jonas-schievink:curse-of-the-recursion, r=ecstatic-morse
Don't lint for self-recursion when the function can diverge

Fixes https://github.com/rust-lang/rust/issues/54444
2020-04-09 05:29:40 +02:00
Mazdak Farrokhzad
ba50bc588e
Rollup merge of #70367 - nikomatsakis:issue-69307, r=Aaron1011
save/restore `pessimistic_yield` when entering bodies

This flag is used to make the execution order around `+=` operators
pessimistic. Failure to save/restore the flag was causing independent
async blocks to effect one another, leading to strange ICEs and failed
assumptions.

Fixes #69307

r? @Zoxc
2020-04-09 05:29:38 +02:00
Mazdak Farrokhzad
e89cb0733a
Rollup merge of #67705 - lzutao:wmemchr, r=wesleywiser
Use unrolled loop for searching NULL in [u16] on Windows
2020-04-09 05:29:36 +02:00
bors
d249d75637 Auto merge of #70936 - Dylan-DPC:rollup-2ng3e5h, r=Dylan-DPC
Rollup of 7 pull requests

Successful merges:

 - #70134 (add basic support of OsStrExt for HermitCore)
 - #70565 (Add inline attributes for functions used in the query system)
 - #70828 (rustdoc: Don't try to load source files from external crates)
 - #70870 (Fix abuses of tykind::err)
 - #70906 (Suggest move for closures and async blocks in more cases.)
 - #70912 (Do not suggest adding type param when `use` is already suggested)
 - #70930 (add tracking issue to `VecDeque::make_contiguous`)

Failed merges:

r? @ghost
2020-04-09 00:11:27 +00:00
Dylan DPC
5848209b64
Rollup merge of #70930 - lcnr:patch-1, r=Dylan-DPC
add tracking issue to `VecDeque::make_contiguous`

The tracking issue is https://github.com/rust-lang/rust/issues/70929
2020-04-08 23:33:48 +02:00
Dylan DPC
268f09f9e6
Rollup merge of #70912 - estebank:reduce-type-param-sugg-verbosity, r=davidtwco
Do not suggest adding type param when `use` is already suggested

Fix #70365, cc #70572.
2020-04-08 23:33:46 +02:00
Dylan DPC
6f8fc4d656
Rollup merge of #70906 - gizmondo:66107, r=estebank
Suggest move for closures and async blocks in more cases.

Fixes #66107, also improves #67577
Related PR https://github.com/rust-lang/rust/pull/65166
2020-04-08 23:33:45 +02:00
Dylan DPC
d0c88396e7
Rollup merge of #70870 - mark-i-m:de-abuse-err, r=eddyb
Fix abuses of tykind::err

r? @eddyb

cc https://github.com/rust-lang/rust/issues/70866
2020-04-08 23:33:43 +02:00
Dylan DPC
1758b7caf6
Rollup merge of #70828 - ollie27:rustdoc_external_macro_src, r=eddyb
rustdoc: Don't try to load source files from external crates

Local items defined in external macros shouldn't generate rendered source files and should link to the external crate's docs instead.

Part of #70757

r? @GuillaumeGomez
cc @eddyb
2020-04-08 23:33:42 +02:00
Dylan DPC
3cae0e479e
Rollup merge of #70565 - Zoxc:inlines-query-system, r=davidtwco
Add inline attributes for functions used in the query system
2020-04-08 23:33:40 +02:00
Dylan DPC
cf0432a5f5
Rollup merge of #70134 - hermitcore:osstrext, r=dtolnay
add basic support of OsStrExt for HermitCore

- this patch increases the compatibility to other operating systems
- in principle `ffi.rs` is derived from `src/libstd/sys/unix/ext/ffi.rs`
2020-04-08 23:33:38 +02:00
bors
1edcfc83c6 Auto merge of #70721 - anyska:bless-all-mir-opt, r=oli-obk
--bless all mir-opt tests.

r? @oli-obk
2020-04-08 21:06:49 +00:00
Ana-Maria Mihalache
82d6e07c86 Add ignore-wasm32-bare to mir-opt tests that need it. 2020-04-08 18:58:49 +00:00
bors
485c5fb6e1 Auto merge of #70931 - Dylan-DPC:rollup-f8orcao, r=Dylan-DPC
Rollup of 9 pull requests

Successful merges:

 - #70789 (remove false positives of unused_braces)
 - #70847 (ci: move /var/lib/docker to /mnt on GHA)
 - #70850 (BTreeMap first last proposal tweaks)
 - #70876 (Use a `SmallVec` for `Cache::predecessors`.)
 - #70883 (Clean up E0507 explanation)
 - #70892 (wf: refactor `compute_trait_ref`)
 - #70914 (Corrects a typo in rustdoc documentation.)
 - #70915 (Remove unnecessary TypeFlags::NOMINAL_FLAGS)
 - #70927 (Clean up E0510 explanation)

Failed merges:

r? @ghost
2020-04-08 17:55:45 +00:00
Oliver Middleton
6f96dc221c rustdoc: Don't try to load source files from external crates
Local items defined in external macros shouldn't generate rendered source files and should link to the external crate's docs instead.
2020-04-08 18:35:17 +01:00
Dylan DPC
1498da87c2
Rollup merge of #70927 - GuillaumeGomez:cleanup-e0510, r=Dylan-DPC
Clean up E0510 explanation

r? @Dylan-DPC
2020-04-08 18:37:31 +02:00
Dylan DPC
bad8f0bd97
Rollup merge of #70915 - tsandstr:remove-nominal-flags, r=eddyb
Remove unnecessary TypeFlags::NOMINAL_FLAGS

This was a relic from when we had "nominal flags" and "cached
properties." The latter no longer exists, so nominal flags are no
longer necessary. In fact, every flag is considered a nominal flag. I
went ahead and removed all references to NOMINAL_FLAGS.

Fixes rust-lang#70836
2020-04-08 18:37:30 +02:00
Dylan DPC
9a84771a23
Rollup merge of #70914 - tsandstr:typo1, r=Dylan-DPC
Corrects a typo in rustdoc documentation.

Fixes rust-lang#70856

Sorry, I am just learning git and I think I may have accidentally done some wacky stuff that closed my last PR. Here it is again.
2020-04-08 18:37:28 +02:00
Dylan DPC
e3346e5b95
Rollup merge of #70892 - lcnr:interators_are_nice, r=nikomatsakis
wf: refactor `compute_trait_ref`

moves `extend_cause_with_original_assoc_item_obligation` out of `compute_trait_ref` and
changes `trait_assoc_items` to an iterator. This saves us from building an unnecessary `Vec<_>`

r? @eddyb i guess
2020-04-08 18:37:27 +02:00
Dylan DPC
66966667b5
Rollup merge of #70883 - GuillaumeGomez:cleanup-e0507, r=Dylan-DPC
Clean up E0507 explanation

r? @Dylan-DPC
2020-04-08 18:37:25 +02:00
Dylan DPC
e97a6e7bdc
Rollup merge of #70876 - nnethercote:smallvec-predecessors, r=estebank
Use a `SmallVec` for `Cache::predecessors`.

This is a very small win.
2020-04-08 18:37:24 +02:00
Dylan DPC
b9bb12640e
Rollup merge of #70850 - ssomers:btreemap_first_last, r=Amanieu
BTreeMap first last proposal tweaks

Clean-up and following up on a request in #62924.

Trying the reviewer of the original code #65637...
r? @scottmcm
2020-04-08 18:37:22 +02:00
Dylan DPC
54abd4ffcf
Rollup merge of #70847 - pietroalbini:ci-move-docker-lib, r=Mark-Simulacrum
ci: move /var/lib/docker to /mnt on GHA

There are some builders that are running out of disk space while building the Docker images, such as arm-android. This moves and symlinks `/var/lib/docker` to the `/mnt` partition on Linux GHA.

Example of a build failing because of this: https://github.com/rust-lang-ci/rust/runs/564628621
2020-04-08 18:37:18 +02:00
Dylan DPC
956e50bce1
Rollup merge of #70789 - lcnr:macros, r=varkor
remove false positives of unused_braces

fixes #70717

We could potentially be more aggressive when linting let bindings by checking if there are any explicit `ref`s.
I have been unable to create a snippet which compiles when using braces but has a borrowck error
without them. The closes I've gotten is [the following (playground)](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=4a1552ebe9648cb13fcb8dd969189a6c).

r? @eddyb
2020-04-08 18:37:16 +02:00
Bastian Kauschke
839d229550
add VecDeque::make_contiguous tracking issue 2020-04-08 16:53:04 +02:00
Niko Matsakis
563152d883 comment pessimistic yield and saving/restoring state 2020-04-08 14:49:57 +00:00
Guillaume Gomez
80e3126ec1 Clean up E0510 explanation 2020-04-08 15:05:52 +02:00
Alex Aktsipetrov
aaebbe196b Suggest move for closures and async blocks in more cases. 2020-04-08 13:01:53 +02:00
mark
daddf4db72 fix another ICE 2020-04-07 22:47:26 -05:00
mark
a38eae5942 fix ice with trait obj dummy self 2020-04-07 22:47:26 -05:00
mark
4fe09f282b fix abuses of tykind::err 2020-04-07 22:47:25 -05:00
Theo Sandstrom
4cdb2065ef Remove unnecessary TypeFlags::NOMINAL_FLAGS
This was a relic from when we had "nominal flags" and "cached
properties." The latter no longer exists, so nominal flags are no
longer necessary. In fact, every flag is considered a nominal flag. I
went ahead and removed all references to NOMINAL_FLAGS.

Fixes rust-lang#70836
2020-04-07 21:57:31 -04:00
Esteban Küber
a3e54b59f9 Do not suggest adding type param when use is already suggested
Fix #70365, cc #70572.
2020-04-07 18:07:26 -07:00
Josh Stone
ce8abc63a7 Avoid extra &mut in Chain::fold and try_fold 2020-04-07 16:58:52 -07:00
Josh Stone
2c4cffde3b Reduce callsites in Chain::last() 2020-04-07 16:50:26 -07:00
Josh Stone
8aac1077ed Reduce callsites in Chain::count() 2020-04-07 16:50:16 -07:00
Theo Sandstrom
d55c3998e0 Corrects a typo in rustdoc documentation.
Fixes rust-lang#70856
2020-04-07 18:37:35 -04:00
Ana-Maria Mihalache
d0e0f4021d Remove old mir-opt test format. 2020-04-07 18:02:11 +00:00
Josh Stone
859b8da21f Implement Chain with Option fuses
The iterators are now "fused" with `Option` so we don't need separate
state to track which part is already exhausted, and we may also get
niche layout for `None`. We don't use the real `Fuse` adapter because
its specialization for `FusedIterator` unconditionally descends into the
iterator, and that could be expensive to keep revisiting stuff like
nested chains. It also hurts compiler performance to add more iterator
layers to `Chain`.
2020-04-07 10:55:00 -07:00
Ana-Maria Mihalache
ea4aca19c1 Normalize away pairs of line:col numbers. 2020-04-07 17:49:14 +00:00
Ana-Maria Mihalache
e0bb75ef69 Add EMIT_MIR_FOR_EACH_BIT_WIDTH to tests that need it. 2020-04-07 17:49:14 +00:00
Ana-Maria Mihalache
688a4ddd20 --bless more mir-opt tests. 2020-04-07 17:49:14 +00:00
Jonas Schievink
b8f416d67f Further improve comments 2020-04-07 19:30:16 +02:00
Bastian Kauschke
817f05986a remove false positives of unused_braces 2020-04-07 17:54:50 +02:00
Bastian Kauschke
ab4178bd7d wf: refactor compute_trait_ref 2020-04-07 17:49:47 +02:00
Ana-Maria Mihalache
ef88769e4f --bless all mir-opt tests. 2020-04-07 15:09:01 +00:00
bors
42abbd8878 Auto merge of #70884 - Dylan-DPC:rollup-r3raqdf, r=jonas-schievink
Rollup of 5 pull requests

Successful merges:

 - #70201 (Small tweaks in ToOwned::clone_into)
 - #70762 (Miri leak check: memory reachable through globals is not leaked)
 - #70846 (Keep codegen units unmerged when building compiler builtins)
 - #70854 (Use assoc int submodules)
 - #70857 (Don't import integer and float modules, use assoc consts 2)

Failed merges:

r? @ghost
2020-04-07 13:43:30 +00:00
Dylan DPC
89d661f15d
Rollup merge of #70857 - faern:use-assoc-int-float-consts, r=dtolnay
Don't import integer and float modules, use assoc consts 2

Follow up to #70777. I missed quite a lot of places. Partially because I wanted to keep the size of the last PR down, and partially because my regexes were not good enough :)

r? @dtolnay
2020-04-07 14:46:59 +02:00