Commit Graph

106245 Commits

Author SHA1 Message Date
Dylan DPC
c1779412fa
Rollup merge of #68790 - nnethercote:improve-merge_from_succ, r=nikomatsakis
Improve `merge_from_succ`

A couple of small performance wins.

r? @nikomatsakis
2020-02-05 13:14:25 +01:00
Dylan DPC
d694f22521
Rollup merge of #68762 - ForNeVeR:patch-1, r=alexcrichton
Strip unnecessary subexpression

It became unnecessary since a06baa56b9 reformatted the file. The comment is currently a bit misleading.
2020-02-05 13:14:22 +01:00
bors
4ff8fb9cb2 Auto merge of #68831 - Dylan-DPC:rollup-j6x15y9, r=Dylan-DPC
Rollup of 7 pull requests

Successful merges:

 - #68282 (Instrument C / C++ in MemorySanitizer example)
 - #68758 (Fix 59191 - ICE when macro replaces crate root with non-module item)
 - #68805 (bootstrap: fix clippy warnings)
 - #68810 (Remove Copy impl from OnceWith)
 - #68815 (remove redundant imports (clippy::single_component_path_imports))
 - #68818 (fix couple of perf related clippy warnings)
 - #68819 (Suggest `split_at_mut` on multiple mutable index access)

Failed merges:

r? @ghost
2020-02-05 03:20:43 +00:00
bors
002287d25f Auto merge of #68544 - Aaron1011:remove-overlapping-traits, r=estebank
Remove the `overlapping_marker_traits` feature

See #29864

This has been replaced by `#[feature(marker_trait_attr)]`

A few notes:

* Due to PR #68057 not yet being in the bootstrap compiler, it's
  necessary to continue using `#![feature(overlapping_marker_traits)]`
  under `#[cfg(bootstrap)]` to work around type inference issues.
* I've updated tests that used `overlapping_marker_traits` to now use
  `marker_trait_attr` where applicable

The test `src/test/ui/overlap-marker-trait.rs` doesn't make any sense
now that `overlapping_marker_traits`, so I removed it.

The test `src/test/ui/traits/overlap-permitted-for-marker-traits-neg.rs`
now fails, since it's no longer possible to have multiple overlapping
negative impls of `Send`. I believe that this is the behavior we want
(assuming that `Send` is not going to become a `#[marker]` trait, so I
renamed the test to `overlap-permitted-for-marker-traits-neg`
2020-02-04 23:56:49 +00:00
Dylan DPC
793a5e68b4
Rollup merge of #68819 - estebank:split_at_mut, r=oli-obk
Suggest `split_at_mut` on multiple mutable index access

cc #58792.
2020-02-04 21:51:58 +01:00
Dylan DPC
a25ce40bc9
Rollup merge of #68818 - matthiaskrgr:misc_perf, r=Mark-Simulacrum
fix couple of perf related clippy warnings

librustc: don't clone a type that is copy
librustc_incremental: use faster vector initialization
librustc_typeck: don't clone a type that is copy
librustdoc: don't create a vector where a slice will do
2020-02-04 21:51:56 +01:00
Dylan DPC
3fe4c0ddf9
Rollup merge of #68815 - matthiaskrgr:redundant_imports, r=alexcrichton
remove redundant imports (clippy::single_component_path_imports)
2020-02-04 21:51:55 +01:00
Dylan DPC
94d6a96189
Rollup merge of #68810 - ollie27:once_with_copy, r=Dylan-DPC
Remove Copy impl from OnceWith

Iterators typically don't implement `Copy` and this shouldn't be an exception.
2020-02-04 21:51:53 +01:00
Dylan DPC
4d6e2d81b8
Rollup merge of #68805 - matthiaskrgr:cleanup_bootstrap, r=Mark-Simulacrum
bootstrap: fix clippy warnings

r? @oli-obk
2020-02-04 21:51:52 +01:00
Dylan DPC
48ea0fa416
Rollup merge of #68758 - daboross:fix-59191, r=petrochenkov
Fix 59191 - ICE when macro replaces crate root with non-module item

Hi,

This should fix #59191! My friend and I are working on learning the rustc codebase through contributions, so please feel free to mention anything amiss or that could be done better.

The code adds an explicit case for when a macro applied to the crate root (via an inner attribute) replaces it with something nonsensical, like a function. The crate root must be a module, and the error message reflects this.

---

I should note that there are a few other weird edge cases here, like if they do output a module, it succeeds but uses that module's name as a prefix for all names in the crate. I'm assuming that's an issue for stabilizing #54726, though.
2020-02-04 21:51:50 +01:00
Dylan DPC
1921fc0994
Rollup merge of #68282 - tmiasko:sanitizer-example, r=steveklabnik
Instrument C / C++ in MemorySanitizer example

Modify the example to instrument C / C++ in addition to Rust, since it
will be generally required (e.g., when using libbacktrace for symbolication).
2020-02-04 21:51:48 +01:00
bors
c9290dceee Auto merge of #68558 - HeroicKatora:buf-writer-capacity, r=alexcrichton
Add a method to query the capacity of a BufWriter and BufReader

Besides the obvious of retrieving the parameter used to construct the writer, this method allows consumers to control the number of `flush` calls during write operations. For `BufReader` it gives an upper bound on the returned buffer in `fill_buf` which might influence the allocation behaviour of a consumer.
2020-02-04 20:30:53 +00:00
Aaron Hill
302f8c97ea
Remove the overlapping_marker_traits feature
See #29864

This has been replaced by `#[feature(marker_trait_attr)]`

A few notes:

* Due to PR #68057 not yet being in the bootstrap compiler, it's
  necessary to continue using `#![feature(overlapping_marker_traits)]`
  under `#[cfg(bootstrap)]` to work around type inference issues.
* I've updated tests that used `overlapping_marker_traits` to now use
  `marker_trait_attr` where applicable

The test `src/test/ui/overlap-marker-trait.rs` doesn't make any sense
now that `overlapping_marker_traits`, so I removed it.

The test `src/test/ui/traits/overlap-permitted-for-marker-traits-neg.rs`
now fails, since it's no longer possible to have multiple overlapping
negative impls of `Send`. I believe that this is the behavior we want
(assuming that `Send` is not going to become a `#[marker]` trait, so I
renamed the test to `overlap-permitted-for-marker-traits-neg`
2020-02-04 13:20:47 -05:00
bors
5b0caef54a Auto merge of #68377 - estebank:fn-obligations-spans, r=oli-obk
Tweak obligation error output

- Point at arguments or output when fn obligations come from them, or ident when they don't
- Point at `Sized` bound (fix #47990)
- When object unsafe trait uses itself in associated item suggest using `Self` (fix #66424, fix #33375, partially address #38376, cc #61525)
-  Point at reason in object unsafe trait with `Self` in supertraits or `where`-clause (cc #40533, cc #68377)
- On implicit type parameter `Sized` obligations, suggest `?Sized` (fix #57744, fix #46683)
2020-02-04 17:17:55 +00:00
bors
126ad2b813 Auto merge of #68708 - Mark-Simulacrum:stage0-step, r=pietroalbini
Step stage0 to bootstrap from 1.42

This also includes a commit which fixes the rustfmt downloading logic to redownload when the rustfmt channel changes, and bumps rustfmt to a more recent version.
2020-02-04 14:16:18 +00:00
Mark Rousskov
dbc9894095 Drop unused extern crates 2020-02-04 08:14:08 -05:00
bors
bae3d0dfc7 Auto merge of #68804 - ecstatic-morse:qualif-cursor-lazy, r=estebank
Always use lazy qualif getters during const-checking

`has_mut_interior_eager_seek` was needed to work around an overly restrictive bound on the `per_local` argument to the `Qualif` trait. This PR makes that bound `FnMut` instead of `Fn` so we can seek cursors inside of it, resolving a FIXME in the const-checking code.
2020-02-04 10:58:45 +00:00
bors
fc07615c49 Auto merge of #68601 - 0dvictor:split, r=tmandry
Split `join_codegen_and_link()` into two steps

`join_codegen_and_link()` is split to `join_codegen()` and `link()`.
2020-02-04 05:48:54 +00:00
Esteban Küber
0f73133be6 Suggest split_at_mut on multiple mutable index access 2020-02-03 18:00:14 -08:00
Matthias Krüger
fe1314dbc4 fix couple of perf related clipyp warnings
librustc: don't clone a type that is copy
librustc_incremental: use faster vector initialization
librustc_typeck: don't clone a type that is copy
librustdoc: don't create a vector where a slice will do
2020-02-04 02:35:56 +01:00
Victor Ding
ae51d2ba32 Split join_codegen_and_link() into two steps
`join_codegen_and_link()` is split to `join_codegen()` and `link()`.
2020-02-04 11:09:50 +11:00
Matthias Krüger
697ef95c9f remove redundant imports (clippy::single_component_path_imports) 2020-02-04 01:05:45 +01:00
Oliver Middleton
5f689fe466 Remove Copy impl from OnceWith
Iterators typically don't implement `Copy` and this shouldn't be an exception.
2020-02-03 22:30:17 +00:00
bors
42a0bd2091 Auto merge of #67668 - matthewjasper:or-patterns, r=pnkfelix
Implement MIR lowering for or-patterns

This is the last thing needed to get meaningful run-pass tests for or-patterns. There probably need to be more tests before stabilizing this, but the most important cases should have been covered.

Note: we can generate exponentially large MIR CFGs when using or-patterns containing bindings, type ascriptions, or that are for a match arm with a guard. `src/test/mir-opt/exponential-or.rs` shows the best case for what we currently do.

cc #54883
closes #60350
closes #67514

cc @Centril
r? @pnkfelix
2020-02-03 22:02:26 +00:00
Matthew Jasper
8dbbe4d144 Avoid scheduling repeated StorageDeads
Also add some comments
2020-02-03 19:42:15 +00:00
Matthew Jasper
9b9dafb2c8 Make use of Place: Copy 2020-02-03 19:42:15 +00:00
matthewjasper
1d90ed6370 Apply suggestions from code review
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2020-02-03 19:42:15 +00:00
Matthew Jasper
89e52e2ca9 Address review comments 2020-02-03 19:42:15 +00:00
Matthew Jasper
5f90dbd5e8 Make Candidate private 2020-02-03 19:42:15 +00:00
Matthew Jasper
c7e6f88926 Add more tests for or-patterns 2020-02-03 19:42:15 +00:00
Matthias Krüger
5f979e9afa bootstrap: fix clippy warnings 2020-02-03 20:26:36 +01:00
Esteban Küber
0e584114c6 Change wording for object unsafe because of assoc const 2020-02-03 10:54:16 -08:00
bors
8417d68de5 Auto merge of #68803 - Dylan-DPC:rollup-b4x6ghj, r=Dylan-DPC
Rollup of 8 pull requests

Successful merges:

 - #68678 (Install robots.txt into rust-docs tarballs)
 - #68711 (Added upper bound of what vecs and boxes can allocate)
 - #68744 (Do not ICE in `type-alias-impl-trait` with save-analysis)
 - #68777 (Clean up E0263 explanation)
 - #68787 (Optimize core::ptr::align_offset (part 1))
 - #68797 (Fix links to types instead of modules)
 - #68798 (Test that `#[track_caller]` as `fn()` respects RT / CTFE equivalence)
 - #68800 (Stabilize `core::iter::once_with()`)

Failed merges:

r? @ghost
2020-02-03 18:40:54 +00:00
Dylan MacKenzie
21a040e7ac Treat Rvalue::AddressOf the same as Rvalue::Ref 2020-02-03 10:38:32 -08:00
Dylan MacKenzie
110a7e25b6 Eliminate "eager" qualif getter
All qualif getters are now lazy
2020-02-03 10:33:33 -08:00
Dylan MacKenzie
4c5ca44b92 Pass correct closure type to Qualif methods 2020-02-03 10:32:54 -08:00
Dylan MacKenzie
49ef3dac69 Take FnMut instead of Fn in Qualif methods 2020-02-03 10:27:38 -08:00
Dylan DPC
af3c315daf
Rollup merge of #68800 - JohnTitor:stabilize-once-with, r=Centril
Stabilize `core::iter::once_with()`

Fixes #57581

FCP: https://github.com/rust-lang/rust/issues/57581#issuecomment-576178031

r? @SimonSapin
2020-02-03 18:58:37 +01:00
Dylan DPC
f17f97d36a
Rollup merge of #68798 - Centril:caller-loc-ctfe-rt-equiv, r=RalfJung
Test that `#[track_caller]` as `fn()` respects RT / CTFE equivalence

r? @RalfJung cc @anp @eddyb
2020-02-03 18:58:36 +01:00
Dylan DPC
1028978e8f
Rollup merge of #68797 - GuillaumeGomez:link-to-types, r=Dylan-DPC
Fix links to types instead of modules

r? @Dylan-DPC
2020-02-03 18:58:35 +01:00
Dylan DPC
370fd8c1b7
Rollup merge of #68787 - amosonn:patch-1, r=nagisa
Optimize core::ptr::align_offset (part 1)

r? @nagisa
See #68616 for main discussion.
2020-02-03 18:58:33 +01:00
Dylan DPC
51c6c25575
Rollup merge of #68777 - GuillaumeGomez:clean-up-e0263, r=Dylan-DPC
Clean up E0263 explanation

r? @Dylan-DPC
2020-02-03 18:58:32 +01:00
Dylan DPC
95d1f6ffcd
Rollup merge of #68744 - JohnTitor:fix-ice-save-analysis, r=cramertj
Do not ICE in `type-alias-impl-trait` with save-analysis

FIxes #68621
Fixes #68750
2020-02-03 18:58:30 +01:00
Dylan DPC
5e561c2135
Rollup merge of #68711 - hman523:fix-68593, r=Dylan-DPC
Added upper bound of what vecs and boxes can allocate

Fixed issue #68593
I added a line of documentation to these two files to reflect that vectors and boxes ensure that they never allocate more than `isize::MAX` bytes.
r? @steveklabnik
2020-02-03 18:58:27 +01:00
Dylan DPC
95df2bcaeb
Rollup merge of #68678 - Mark-Simulacrum:robots, r=pietroalbini
Install robots.txt into rust-docs tarballs

Fixes #68677.

I believe this might just work out from the central-station perspective, but even if it doesn't, this is a prerequisite step anyway.
2020-02-03 18:58:23 +01:00
Yuki Okushi
7e2d7e0bbc Stabilize core::iter::once_with() 2020-02-04 00:47:04 +09:00
Mazdak Farrokhzad
f0eec88581 track_caller test caller_location ctfe/rt equivalence wrt. fnptrs 2020-02-03 16:15:30 +01:00
Guillaume Gomez
46f6dad101 Fix links to types instead of modules 2020-02-03 16:12:35 +01:00
bors
bdd946df3a Auto merge of #68665 - eddyb:debuginfo-early-create-var, r=nagisa
codegen: create DIVariables ahead of using them with llvm.dbg.declare.

Instead of having `rustc_codegen_llvm` bundle creation of a `DIVariable` and `llvm.dbg.declare` into a single operation, they are now two separate methods, and the `DIVariable` is created earlier, specifically when `mir::VarDebugInfo`s are being partitioned into locals.

While this isn't currently needed, it's a prerequisite for #48300, which adds fragmented debuginfo, where one `mir::VarDebugInfo` has multiple parts of itself mapped to different `mir::Place`s.
For debuggers to see one composite variable instead of several ones with the same name, we need to create a single `DIVariable` and share it between multiple `llvm.dbg.declare` calls, which are likely pointing to different MIR locals.
That makes the `per_local_var_debug_info` partitioning a good spot to do this in, as we can create *exactly* one `DIVariable` per `mir::VarDebugInfo`, and refer to it as many things as needed.

I'm opening this PR separately because I want to test its perf impact in isolation (see https://github.com/rust-lang/rust/pull/48300#issuecomment-580121438).

r? @nagisa or @oli-obk cc @michaelwoerister @nikomatsakis
2020-02-03 13:06:44 +00:00
Eduard-Mihai Burtescu
e35dfad5b8 rustc_codegen_llvm: avoid redundant calls to span_start. 2020-02-03 12:14:22 +02:00