82839 Commits

Author SHA1 Message Date
bors
f1d02c3073 Auto merge of #53671 - RalfJung:miri-refactor, r=oli-obk
Miri engine cleanup

* Unify the two maps in memory to store the allocation and its kind together.
* Share the handling of statics between CTFE and miri: The miri engine always
      uses "lazy" `AllocType::Static` when encountering a static.  Acessing that
      static invokes CTFE (no matter the machine).  The machine only has any
      influence when writing to a static, which CTFE outright rejects (but miri
      makes a copy-on-write).
* Add an `AllocId` to by-ref consts so miri can use them as operands without
      making copies.
* Move responsibilities around for the `eval_fn_call` machine hook: The hook
      just has to find the MIR (or entirely take care of everything); pushing the
      new stack frame is taken care of by the miri engine.
* Expose the intrinsics and lang items implemented by CTFE so miri does not
      have to reimplement them.
* Allow Machine to hook into foreign statics (used by miri to get rid of some other hacks).
* Clean up function calling.
* Switch const sanity check to work on operands, not mplaces.
* Move const_eval out of rustc_mir::interpret, to make sure that it does not access private implementation details.

In particular, we can finally make `eval_operand` take `&self`. :-)

Should be merged after https://github.com/rust-lang/rust/pull/53609, across which I will rebase.
2018-08-29 00:02:37 +00:00
Ralf Jung
c9b5fac7da first test const-ness, then hook fn call 2018-08-28 19:57:05 +02:00
Ralf Jung
506dd7058c fix const_prop detecting unary neg underflows 2018-08-28 19:57:05 +02:00
Ralf Jung
e6a5a9418a restructure unary_op to also dispatch on type first; fix promotion with unary '-' overflowing 2018-08-28 19:57:05 +02:00
Ralf Jung
066d2eea25 fix unsized extern types 2018-08-28 19:57:05 +02:00
Ralf Jung
f96208ca5b address nits 2018-08-28 19:57:05 +02:00
bors
7061b27757 Auto merge of #53679 - japaric:cortex-r, r=alexcrichton
add more Cortex-R targets

This expands on PR #53663 to complete the set of Cortex-R targets and builds
rust-std components for them.

r? @alexcrichton

each extra rust-std component (there's 4 of them) takes about 3 minutes to build
on my local machine. In terms of stability (LLVM codegen bugs) these new targets
should be as stable as the Cortex-M ones (e.g. `thumbv7m-none-eabi`).

If the extra build time is too much we can leave the rust-std components out for
now

closes #53663
cc @paoloteti
2018-08-28 16:23:27 +00:00
bors
ec4a752202 Auto merge of #53493 - matthewjasper:hair-spans, r=nikomatsakis
Use smaller span for adjustments on block expressions

When returning a mutable reference don't use the entire body of the function as the span for the adjustments at the end.

The error [in this case](https://github.com/rust-lang/rust/compare/master...matthewjasper:hair-spans?expand=1#diff-ecef8b1f15622fb48a803c9b61605c78) is worse, but neither error message is really what we want. I have some ideas on how to get a better error message that will have to wait for a future PR.
2018-08-28 13:12:16 +00:00
bors
83ddc33347 Auto merge of #53314 - nikomatsakis:nll-invert-liveness, r=pnkfelix
NLL: experiment with inverting liveness

I got inspired to see what would happen here.

Fixes #52460

r? @pnkfelix
2018-08-28 10:58:10 +00:00
Felix S. Klock II
8d231ec872 Fix definition of LocalUseMapBuild so that it can build under stage0,
which does not have as many feature gates enabled.
2018-08-28 10:59:15 +02:00
bors
59e52b1b96 Auto merge of #53616 - varkor:hir-map-rename, r=nikomatsakis
Restructure hir::map::Node and hir::map::Entry

- Moves `hir::map::Node` to `hir::Node` and removes the `Node*` prefix from its variants.
- Changes `hir::map::Entry` to a struct `hir::map::Entry`.
- Removes the `Node*` prefix from each of `AnnNode`s variants.

r? @eddyb
2018-08-28 06:44:12 +00:00
bors
ca63a4e438 Auto merge of #53404 - oconnor663:current_dir_behavior, r=alexcrichton
document the platform-specific behavior of Command::current_dir

See also https://github.com/rust-lang/rust/issues/37868.

Here's my initial wording:

> Note that if the program path is relative (e.g. `"./script.sh"`), the interaction between that path and `current_dir` varies across platforms. Windows currently ignores `current_dir` when locating the program, but Unix-like systems interpret the program path relative to `current_dir`. These implementation details aren't considered stable, and it's recommended to call `canonicalize` to get an absolute program path instead of using relative paths and `current_dir` together.

I'd like to get feedback on:

- _Should_ we consider those details stable? It might be disruptive to change them, regardless of what I can get away with claiming in docs :)
- Is `canonicalize` an appropriate recommendation? As discussed in #37868 above, there are reasons it's not called automatically in the `Command` implementation.
2018-08-28 03:22:21 +00:00
bors
f33921ba58 Auto merge of #53272 - mark-i-m:anon_param_error_now, r=nikomatsakis
Warn on anon params in 2015 edition

cc #41686 https://github.com/rust-lang/rfcs/pull/2522
cc  @Centril @nikomatsakis

TODO:
- [x] Make sure the tests pass.
- [x] Make sure there is rustfix-able suggestion. Current plan is to just suggest `_ : Foo`
- [x] Add a rustfix ui test.

EDIT: It seems I already did the last two in #48309
2018-08-28 01:04:05 +00:00
bors
8c2b371ebc Auto merge of #53227 - nivkner:pin_move, r=RalfJung
move the Pin API into its own module for centralized documentation

This implements the change proposed by @withoutboats in #49150, as suggested by @RalfJung in the review of #53104,
along with the documentation that was originally in it, that was deemed more appropriate in module-level documentation.

r? @RalfJung
2018-08-27 22:56:15 +00:00
varkor
a9d075e756 Revert crate root changes 2018-08-27 21:46:23 +01:00
varkor
6642462ef6 Make small modifications 2018-08-27 21:46:23 +01:00
varkor
e2a1cce9c5 Rename hir::map::NodeKind to hir::Node 2018-08-27 21:46:23 +01:00
varkor
ecbdfb4988 Convert EntryKind to a struct, Entry 2018-08-27 21:46:13 +01:00
varkor
11665ca45a Remove path prefixes from NodeKind 2018-08-27 21:46:13 +01:00
varkor
4b12f700db Remove Node* prefix from AnnNode 2018-08-27 21:45:46 +01:00
varkor
befc4b1100 Rename hir::map::Node to hir::map::NodeKind 2018-08-27 21:45:46 +01:00
varkor
a1a338faab Rename MapEntry to EntryKind 2018-08-27 21:45:46 +01:00
bors
f7202e40f4 Auto merge of #51456 - qmx:crate-in-path, r=nikomatsakis
resolve suggestions should use `crate::` when enabled

I couldn't find a way to add a specific assertion for the ui test, so the expected output is living under the `crates-in-path.stderr` ui test.

- is this the right place for the test?

fixes #51212
2018-08-27 19:51:01 +00:00
Mark Mansi
548f28e194 fix test stderrs 2018-08-27 13:06:26 -05:00
Niko Matsakis
09feec6d5c make to_location O(1) 2018-08-27 13:57:55 -04:00
Niko Matsakis
7eec37b2f9 merge PointIndexMap and RegionValueElements 2018-08-27 13:57:55 -04:00
Niko Matsakis
1ab08ef846 micro-optimize dominator code 2018-08-27 13:57:55 -04:00
Niko Matsakis
57f39ee79b kill dead code from util/liveness 2018-08-27 13:57:55 -04:00
Niko Matsakis
af3ff10c7d improve comment on LiveVar 2018-08-27 13:57:55 -04:00
Niko Matsakis
94697ba4b6 rename LocalWithRegion to LiveVar 2018-08-27 13:57:55 -04:00
Niko Matsakis
437485527e comment what trace does 2018-08-27 13:57:55 -04:00
Niko Matsakis
9394a99f8e fix comment 2018-08-27 13:57:55 -04:00
Niko Matsakis
a63ece43b3 enable feature impl_header_lifetime_elision 2018-08-27 13:57:55 -04:00
Niko Matsakis
4e3740ace0 liveness.rs: rustfmt 2018-08-27 13:57:55 -04:00
Niko Matsakis
12f50a6e75 implement liveness tracing, remove old liveness system 2018-08-27 13:57:55 -04:00
Niko Matsakis
f1a675a467 update comment in the interest of precision 2018-08-27 13:48:40 -04:00
Niko Matsakis
a13e4aea81 remove the liveness mode and simplify categorize
Less modes!
2018-08-27 13:48:40 -04:00
bors
70a21e89f1 Auto merge of #53441 - toidiu:ak-fix53419, r=nikomatsakis
fix for late-bound regions

Fix for https://github.com/rust-lang/rust/issues/53419

r? @nikomatsakis
2018-08-27 17:42:45 +00:00
Mark Mansi
6c264d764e Fix anon param + make it allow-by-def 2018-08-27 12:40:16 -05:00
Mark Mansi
15b2640e70 fix another 2018-08-27 12:40:16 -05:00
Mark Mansi
3a9cf12021 fix some anon params 2018-08-27 12:40:16 -05:00
Mark Mansi
e0d03fd524 oops 2018-08-27 12:40:16 -05:00
Mark Mansi
20723178cc warn on anon params in 015 2018-08-27 12:40:16 -05:00
Ralf Jung
6c78fa822a use associated const for machine controlling mutable statics
So get rid of the IsStatic trait again
2018-08-27 18:12:49 +02:00
Ralf Jung
5b737dbbf4 get rid of *most* of the fn call hack by honoring mir.spread_arg 2018-08-27 18:12:49 +02:00
Ralf Jung
c38cc896dc fix len() on non-array but array-layout types (e.g. SIMD) 2018-08-27 18:12:49 +02:00
Ralf Jung
07bdd48b60 expand comment on how statics work 2018-08-27 18:12:49 +02:00
Ralf Jung
c898e1911d fix handling of unsized types in validation; validate str to be UTF-8 2018-08-27 18:12:49 +02:00
Ralf Jung
89cfd08b47 validate enum discriminant whenever it is read 2018-08-27 18:12:49 +02:00
Ralf Jung
548b3738c2 dedicated handling for binops on bool and char (UB if they are not valid) 2018-08-27 18:12:49 +02:00