Commit Graph

95601 Commits

Author SHA1 Message Date
Tyler Mandry
4a8a552b49 Add DataflowResultsCursor 2019-06-25 17:30:38 -07:00
Tyler Mandry
7262e64f53 Make FlowAtLocation support borrowing flow data 2019-06-25 17:30:37 -07:00
Matthew Jasper
3131427784 Use Locals instead of Places in MIR drop generation 2019-06-25 22:41:22 +01:00
Matthew Jasper
b86e6755b9 Add StorageDead statements for while conditions 2019-06-25 22:41:22 +01:00
Matthew Jasper
be23bd47b7 Unify return, break and continue handling 2019-06-25 22:41:22 +01:00
Matthew Jasper
82a1a89d55 Avoid checking if references implement drop 2019-06-25 22:41:22 +01:00
Matthew Jasper
101a2f59b4 Use as_temp to evaluate statement expressions 2019-06-25 22:41:22 +01:00
Matthew Jasper
62bec71446 Fix incorrect double assignment in MIR for while loops 2019-06-25 22:41:22 +01:00
Igor Matuszewski
dedcd97e92 Use f{32,64}::from_bits 2019-06-25 23:08:10 +02:00
Ralf Jung
390f717a0a tweak wording 2019-06-25 22:59:00 +02:00
Eric Huss
9d798b7198 Adjust warning of -C extra-filename with -o. 2019-06-25 13:31:05 -07:00
Aleksey Kladov
57db25e614 cleanup: rename name_from to symbol_from
Lexer uses Symbols for a lot of stuff, not only for identifiers, so
the "name" terminology is just confusing.
2019-06-25 22:30:21 +03:00
Taylor Cramer
ba12e7862c Add more tests for async/await 2019-06-25 11:46:33 -07:00
bors
5f9c0448dd Auto merge of #62119 - Centril:rollup-el20wu0, r=Centril
Rollup of 7 pull requests

Successful merges:

 - #61814 (Fix an ICE with uninhabited consts)
 - #61987 (rustc: produce AST instead of HIR from `hir::lowering::Resolver` methods.)
 - #62055 (Fix error counting)
 - #62078 (Remove built-in derive macros `Send` and `Sync`)
 - #62085 (Add test for issue-38591)
 - #62091 (HirIdification: almost there)
 - #62096 (Implement From<Local> for Place and PlaceBase)

Failed merges:

r? @ghost
2019-06-25 18:35:41 +00:00
Erin Power
0f34d7a7e5
Updated RELEASES.md for 1.36.0
Co-Authored-By: Taiki Endo <te316e89@gmail.com>
Co-Authored-By: Jonas Schievink <jonasschievink@gmail.com>
Co-Authored-By: Torbjørn Birch Moltu <t.b.moltu@lyse.net>
2019-06-25 20:25:21 +02:00
Aleksey Kladov
b75021b31e refactor lexer to use idiomatic borrowing 2019-06-25 21:02:19 +03:00
Mazdak Farrokhzad
d406d89b31
Rollup merge of #62096 - spastorino:impl-place-from, r=oli-obk,Centril
Implement From<Local> for Place and PlaceBase

r? @oli-obk
More tiny bits of Place 2.0 moved into master
2019-06-25 17:15:37 +02:00
Mazdak Farrokhzad
abc7423f27
Rollup merge of #62091 - ljedrz:hiridification_almost_there, r=Zoxc
HirIdification: almost there

I'm beginning to run out of stuff to HirIdify 😉.

This time I targeted mainly `hir::map::{find, get_parent_node}`, but a few other bits got changed too.

r? @Zoxc
2019-06-25 17:15:36 +02:00
Mazdak Farrokhzad
6070e2e876
Rollup merge of #62085 - JohnTitor:add-test-for-issue-38591, r=Centril
Add test for issue-38591

Closes #38591

r? @pnkfelix
2019-06-25 17:15:34 +02:00
Mazdak Farrokhzad
61fae230e6
Rollup merge of #62078 - petrochenkov:nosendync2, r=varkor
Remove built-in derive macros `Send` and `Sync`

Closes https://github.com/rust-lang/rust/issues/62050
2019-06-25 17:15:33 +02:00
Mazdak Farrokhzad
c5e6069194
Rollup merge of #62055 - matthewjasper:fix-error-counting, r=pnkfelix
Fix error counting

Count duplicate errors for `track_errors` and other error counting checks.
Add FIXMEs to make it clear that we should be moving away from this kind of logic.

Closes #61663
2019-06-25 17:15:31 +02:00
Mazdak Farrokhzad
81be122f94
Rollup merge of #61987 - eddyb:hirless-resolver, r=petrochenkov
rustc: produce AST instead of HIR from `hir::lowering::Resolver` methods.

This avoids synthesizing HIR nodes in `rustc_resolve`, and `rustc::hir::lowering` patching up the result after the fact (I suspect this is even more significant for @Zoxc's chages to arena-allocate the HIR).

r? @oli-obk
2019-06-25 17:15:30 +02:00
Mazdak Farrokhzad
d0e926fcfd
Rollup merge of #61814 - varkor:uninhabited-const-61744, r=oli-obk
Fix an ICE with uninhabited consts

Fixes https://github.com/rust-lang/rust/issues/61744.

r? @oli-obk
2019-06-25 17:15:29 +02:00
bors
303f77ee1d Auto merge of #60732 - jswrenn:arbitrary_enum_discriminant, r=pnkfelix
Implement arbitrary_enum_discriminant

Implements RFC rust-lang/rfcs#2363 (tracking issue #60553).
2019-06-25 15:12:11 +00:00
Yuki Okushi
85ea4a1bf4 Update new_debug_unreachable 2019-06-25 23:09:25 +09:00
Santiago Pastorino
099f9e4e8a Implement From<Local> for Place and PlaceBase 2019-06-25 15:46:23 +02:00
Eduard-Mihai Burtescu
e6ee8a0d44 rustc: produce AST instead of HIR from hir::lowering::Resolver methods. 2019-06-25 15:34:57 +03:00
bors
40ab9d2bd5 Auto merge of #61765 - Keruspe:rustbuild-cxx, r=alexcrichton
rustbuild: detect cxx for all targets

Replaces #61544
Fixes #59917

We need CXX to build llvm-libunwind which can be enabled for alltargets.
As we needed it for all hosts anyways, just move the detection so that it is ran for all targets (which contains all hosts) instead.
2019-06-25 12:07:19 +00:00
Eduard-Mihai Burtescu
fad27df3e7 rustc: correctly transform memory_index mappings for generators. 2019-06-25 13:59:49 +03:00
bors
10deeae326 Auto merge of #62094 - oli-obk:zst_intern, r=eddyb
Don't ICE on mutable zst slices

fixes #62045
2019-06-25 09:10:18 +00:00
varkor
b7a0e40175 Fix an ICE with uninhabited consts 2019-06-25 03:39:23 +01:00
John Kåre Alsaker
11221d120f Inform the query system about properties of queries at compile time 2019-06-25 04:38:04 +02:00
John Kåre Alsaker
c877989655 Add some #[inline] attributes 2019-06-25 04:38:01 +02:00
bors
53ae6d2eb5 Auto merge of #61572 - Aaron1011:fix/generator-ref, r=varkor
Fix HIR visit order

Fixes #61442

When rustc::middle::region::ScopeTree computes its yield_in_scope
field, it relies on the HIR visitor order to properly compute which
types must be live across yield points. In order for the computed scopes
to agree with the generated MIR, we must ensure that expressions
evaluated before a yield point are visited before the 'yield'
expression.

However, the visitor order for ExprKind::AssignOp
was incorrect. The left-hand side of a compund assignment expression is
evaluated before the right-hand side, but the right-hand expression was
being visited before the left-hand expression. If the left-hand
expression caused a new type to be introduced (e.g. through a
deref-coercion), the new type would be incorrectly seen as occuring
*after* the yield point, instead of before. This leads to a mismatch
between the computed generator types and the MIR, since the MIR will
correctly see the type as being live across the yield point.

To fix this, we correct the visitor order for ExprKind::AssignOp
to reflect the actual evaulation order.
2019-06-25 02:17:05 +00:00
bors
a5b17298f2 Auto merge of #62100 - ehuss:update-cargo, r=alexcrichton
Update cargo

17 commits in 807429e1b6da4e2ec52488ef2f59e77068c31e1f..4c1fa54d10f58d69ac9ff55be68e1b1c25ecb816
2019-06-11 14:06:10 +0000 to 2019-06-24 11:24:18 +0000
- Fix typo in comment (rust-lang/cargo#7066)
- travis: enforce formatting of subcrates as well (rust-lang/cargo#7063)
- _cargo: Make function style consistent (rust-lang/cargo#7060)
- Update some fix comments. (rust-lang/cargo#7061)
- Stabilize default-run (rust-lang/cargo#7056)
- Fix typo in comment (rust-lang/cargo#7054)
- fix(fingerpring): do not touch intermediate artifacts (rust-lang/cargo#7050)
- Resolver test/debug cleanup (rust-lang/cargo#7045)
- Rename to_url → into_url (rust-lang/cargo#7048)
- Remove needless lifetimes (rust-lang/cargo#7047)
- Revert test directory cleaning change. (rust-lang/cargo#7042)
- cargo book /reference/manifest: fix typo (rust-lang/cargo#7041)
- Extract resolver tests to their own crate (rust-lang/cargo#7011)
- ci: Do not install addons on rustfmt build jobs (rust-lang/cargo#7038)
- Support absolute paths in dep-info files (rust-lang/cargo#7030)
- ci: Run cargo fmt on all workspaces (rust-lang/cargo#7033)
- Deprecated ONCE_INIT in favor of Once::new() (rust-lang/cargo#7031)
2019-06-24 23:28:11 +00:00
Ralf Jung
1c12b1be33 call out explicitly that general read needs to be called with an initialized buffer 2019-06-24 22:58:53 +02:00
bors
8aa42ed7c2 Auto merge of #61787 - ecstatic-morse:dataflow-split-block-sets, r=pnkfelix
rustc_mir: Hide initial block state when defining transfer functions

This PR addresses [this FIXME](2887008e0c/src/librustc_mir/dataflow/mod.rs (L594-L596)).

This makes `sets.on_entry` inaccessible in `{before_,}{statement,terminator}_effect`. This field was meant to allow implementors of `BitDenotation` to access the initial state for each block (optionally with the effect of all previous statements applied via `accumulates_intrablock_state`) while defining transfer functions.  However, the ability to set the initial value for the entry set of each basic block (except for START_BLOCK) no longer exists. As a result, this functionality is mostly useless, and when it *was* used it was used erroneously (see #62007).

Since `on_entry` is now useless, we can also remove `BlockSets`, which held the `gen`, `kill`, and `on_entry` bitvectors and replace it with a `GenKill` struct. Variables of this type are called `trans` since they represent a transfer function. `GenKill`s are stored contiguously in `AllSets`, which reduces the number of bounds checks and may improve cache performance: one is almost never accessed without the other.

Replacing `BlockSets` with `GenKill` allows us to define some new helper functions which streamline dataflow iteration and the dataflow-at-location APIs. Notably, `state_for_location` used a subtle side-effect of the `kill`/`kill_all` setters to apply the transfer function, and could be incorrect if a transfer function depended on effects of previous statements in the block on `gen_set`.

Additionally, this PR merges `BitSetOperator` and `InitialFlow` into one trait. Since the value of `InitialFlow` defines the semantics of the `join` operation, there's no reason to have seperate traits for each. We can add a default impl of `join` which branches based on `BOTTOM_VALUE`.  This should get optimized away.
2019-06-24 20:44:18 +00:00
Eric Huss
342fa2be25 Update cargo 2019-06-24 11:57:20 -07:00
Mazdak Farrokhzad
a60bbb0f6b --bless you. 2019-06-24 20:45:19 +02:00
bors
7e08576e42 Auto merge of #62081 - RalfJung:miri-pointer-checks, r=oli-obk
Refactor miri pointer checks

Centralize bounds, alignment and NULL checking for memory accesses in one function: `memory.check_ptr_access`. That function also takes care of converting a `Scalar` to a `Pointer`, should that be needed.  Not all accesses need that though: if the access has size 0, `None` is returned. Everyone accessing memory based on a `Scalar` should use this method to get the `Pointer` they need.

All operations on the `Allocation` work on `Pointer` inputs and expect all the checks to have happened (and will ICE if the bounds are violated). The operations on `Memory` work on `Scalar` inputs and do the checks themselves.

The only other public method to check pointers is `memory.ptr_may_be_null`, which is needed in a few places. No need for `check_align` or similar methods. That makes the public API surface much easier to use and harder to mis-use.

This should be largely no-functional-change, except that ZST accesses to a "true" pointer that is dangling or out-of-bounds are now considered UB. This is to be conservative wrt. whatever LLVM might be doing.

While I am at it, this also removes the assumption that the vtable part of a `dyn Trait`-fat-pointer is a `Pointer` (as opposed to a pointer cast to an integer, stored as raw bits).

r? @oli-obk
2019-06-24 17:44:13 +00:00
Mazdak Farrokhzad
5eaedda9f5 Address review comments. 2019-06-24 18:32:52 +02:00
Oliver Scherer
91a15e2857 Pacify tidy 2019-06-24 16:34:50 +02:00
Oliver Scherer
1140a916f6 Add regression test 2019-06-24 15:34:29 +02:00
Oliver Scherer
6b26fdad0a Don't ICE on mutable zst slices 2019-06-24 15:31:52 +02:00
Oliver Scherer
354163d478 Simplify vtable interning 2019-06-24 15:31:25 +02:00
bors
bbbb3e5974 Auto merge of #62092 - lzutao:clippy-update, r=oli-obk
submodules: Update clippy from 5a11ed7b to 8c80b65f

```bash
% git shortlog --no-merges 5a11ed7b92cc4cf40a4568a8fc1ff54b198c333b..
Daniele D'Orazio (4):
      make needless_return work with void functions
      update tests and fix lints in clippy
      more idiomatic code
      cargo fmt

Jeremy Stucki (1):
      Remove needless lifetimes

Lzu Tao (1):
      Fix fallout cause NodeId pruning

Matthias Krüger (1):
      readme: update

Mazdak Farrokhzad (5):
      Fix fallout from rust-lang/rust PR 60861.
      Account for let_chains in collapsible_if ui test cases.
      Fix dogfood test failures.
      Pacify rustfmt.
      Put 'if let' back into comment.

flip1995 (1):
      Remove another unnecessary lifetime
```
r? @Manishearth , cc @oli-obk
2019-06-24 13:08:12 +00:00
Ralf Jung
7e830286c7 fix reoccurring typo 2019-06-24 14:28:16 +02:00
CrLF0710
19f86224a6 Just switch to English linker output using environment variable when using msvc. 2019-06-24 19:56:50 +08:00
CrLF0710
1e9e4b0a7a Add mention of VS 2019 in link error output. 2019-06-24 19:51:35 +08:00
Lzu Tao
ca354e9dac submodules: Update clippy from 5a11ed7b to 8c80b65f 2019-06-24 09:42:31 +00:00