601 Commits

Author SHA1 Message Date
Niko Matsakis
e43096ff05 [nit] remove outdated comment 2018-07-25 16:36:40 +03:00
Niko Matsakis
0d918a8575 improve heuristics for what makes an interesting constraint 2018-07-25 16:36:03 +03:00
Niko Matsakis
76991ea237 [WIP] debug logs in error-reporting 2018-07-25 16:19:16 +03:00
Niko Matsakis
fa69e2183a [3f0fb4f7] improve comment on to_location 2018-07-25 16:18:37 +03:00
Niko Matsakis
d9afd2bb38 introduce new subtyping 2018-07-25 06:38:22 +03:00
Niko Matsakis
b913df06f2 remove num_universal_regions etc from RegionValueElements 2018-07-25 06:38:22 +03:00
Niko Matsakis
2584216364 represent LivenessValues with a specialized type 2018-07-25 06:38:22 +03:00
Niko Matsakis
2fda456ddf extract region_value_str helper 2018-07-25 06:38:21 +03:00
Niko Matsakis
f277b394af generate extra liveness constraints before regioncx is created 2018-07-25 06:38:21 +03:00
Niko Matsakis
92786a48f8 consolidate and use find_sub_region_live_at for everything
remove the old blame system
2018-07-25 06:38:21 +03:00
Niko Matsakis
078220daa8 extract a best_blame_constraint helper 2018-07-25 06:38:21 +03:00
Niko Matsakis
9ba4d33e43 rewrite the "constraint graph search" to use a BFS instead of a DFS
This way we find the shortest path without having to sort etc
2018-07-25 06:38:21 +03:00
Niko Matsakis
4fce59f0fd remove unnecessary blame_span from report_region_errors 2018-07-25 06:38:20 +03:00
Niko Matsakis
52c94e9dec remove inefficiency for adding all points 2018-07-25 06:38:20 +03:00
Niko Matsakis
3f0fb4f7d8 split into two matrices 2018-07-25 06:38:19 +03:00
Niko Matsakis
40498bae65 simplify NLLRegionVariableOrigin 2018-07-25 06:38:19 +03:00
Niko Matsakis
145155dc96 parameterize BitVector and BitMatrix by their index types 2018-07-25 06:38:19 +03:00
bors
6a3db033ad Auto merge of #52597 - oli-obk:promotion_simplify, r=nagisa
Promoteds are statics and statics have a place, not just a value

r? @eddyb

This makes everything around promoteds a little simpler
2018-07-24 13:10:06 +00:00
Felix S. Klock II
1a0294bb84 Thread the errors_buffer down through the NLL region_infer code. 2018-07-23 14:20:20 +02:00
Felix S. Klock II
87e729f58a thread the errors_buffer down into nll::type_check.
Right now its solely used for `check_local`, which ... I guess is not surprising?
2018-07-23 14:20:20 +02:00
Santiago Pastorino
3d3e0aa571 Buffer errors in MIR borrow check
(pnkfelix updated to address tidy, and to change the buffer from
`Vec<DiagnosticBuilder<'errs>>` to a `Vec<Diagnostic>` in order to
avoid painful lifetime maintenance.)
2018-07-23 14:20:12 +02:00
Santiago Pastorino
da935e96a1 Remove redundant outlives declarations 2018-07-23 13:28:54 +02:00
Santiago Pastorino
30313c0ec9 Let lifetimes on find be inferred 2018-07-23 13:28:54 +02:00
Santiago Pastorino
caa11dee50 Remove unused lifetime annotation 2018-07-23 13:28:54 +02:00
Oliver Schneider
de511438cd Promoteds are statics and statics have a place, not just a value 2018-07-23 09:51:30 +02:00
bors
3b7720399a Auto merge of #52616 - kennytm:rollup, r=kennytm
Rollup of 11 pull requests

Successful merges:

 - #51807 (Deprecation of str::slice_unchecked(_mut))
 - #52051 (mem::swap the obvious way for types smaller than the SIMD optimization's block size)
 - #52465 (Add CI test harness for `thumb*` targets. [IRR-2018-embedded])
 - #52507 (Reword when `_` couldn't be inferred)
 - #52508 (Document that Unique::empty() and NonNull::dangling() aren't sentinel values)
 - #52521 (Fix links in rustdoc book.)
 - #52581 (Avoid using `#[macro_export]` for documenting builtin macros)
 - #52582 (Typo)
 - #52587 (Add missing backtick in UniversalRegions doc comment)
 - #52594 (Run the error index tool against the sysroot libdir)
 - #52615 (Added new lines to .gitignore.)
2018-07-22 18:51:46 +00:00
kennytm
aea141e72c
Rollup merge of #52587 - csmoe:doc, r=kennytm
Add missing backtick in UniversalRegions doc comment

r? @QuietMisdreavus
2018-07-23 01:00:07 +08:00
David Wood
c64db0078a
Fallback to general error handling in ICE cases. 2018-07-22 12:53:55 +01:00
David Wood
b6dfa8cba3
Modified how constraint classification happens to upvars, can now handle function call case. 2018-07-22 12:53:53 +01:00
David Wood
ce4f446aa8
Improved is_upvar_field_projection - no longer need recurse parameter. 2018-07-22 12:53:51 +01:00
David Wood
f71dbbb44f
Improved documentation of functions in new module. 2018-07-22 12:49:42 +01:00
David Wood
571eec627c
Improved closure errors. 2018-07-22 12:49:35 +01:00
David Wood
24c5751197
Classify aggregate rvalues as assignments. 2018-07-22 12:23:53 +01:00
bors
a57d5d7b25 Auto merge of #52250 - nnethercote:no-SparseBitMatrix, r=nikomatsakis
Speed up `SparseBitMatrix` use in `RegionValues`.

In practice, these matrices range from 10% to 90%+ full once they are
filled in, so the dense representation is better.

This reduces the runtime of Check Nll builds of `inflate` by 32%, and
several other benchmarks by 1--5%.

It also increases max-rss of `clap-rs` by 30% and a couple of others by
up to 5%, while decreasing max-rss of `coercions` by 14%. I think the
speed-ups justify the max-rss increases.

r? @nikomatsakis
2018-07-22 02:43:57 +00:00
bors
874dec25ed Auto merge of #52115 - Dylan-DPC:feature/nll-liveness-regions, r=nikomatsakis
only compute liveness for variables whose types include regions

Closes #52034

r? @nikomatsakis
2018-07-21 21:01:17 +00:00
csmoe
50720ba706 Add missing backtick 2018-07-21 22:23:50 +08:00
Tyler Mandry
e5286d9fa6 Convert implied_outlives_bounds to a query 2018-07-21 15:56:44 +03:00
dylan_DPC
a4c0d369b6 add docs 2018-07-21 17:21:04 +05:30
dylan_DPC
dbb756ded7 tidy up 2018-07-20 18:40:52 +05:30
dylan_DPC
4e3339efda move NllLivenessMap and LocalWithRegion to liveness_map 2018-07-20 17:51:34 +05:30
Nicholas Nethercote
798209e78b Speed up SparseBitMatrix.
Using a `BTreeMap` to represent rows in the bit matrix is really slow.
This patch changes things so that each row is represented by a
`BitVector`. This is a less sparse representation, but a much faster
one.

As a result, `SparseBitSet` and `SparseChunk` can be removed.

Other minor changes in this patch.

- It renames `BitVector::insert()` as `merge()`, which matches the
  terminology in the other classes in bitvec.rs.

- It removes `SparseBitMatrix::is_subset()`, which is unused.

- It reinstates `RegionValueElements::num_elements()`, which #52190 had
  removed.

- It removes a low-value `debug!` call in `SparseBitMatrix::add()`.
2018-07-20 15:15:06 +10:00
dylan_DPC
9910dee677 tidy fixes 2018-07-20 00:22:57 +05:30
dylan_DPC
2255786212 left out one field during merge 2018-07-19 23:36:26 +05:30
dylan_DPC
1951a30702 convert LocalWithRegion to Local 2018-07-19 23:18:08 +05:30
dylan_DPC
0819ba9bea mir/mod.rs / visit.rs reverted back to using Local 2018-07-19 23:18:07 +05:30
dylan_DPC
0d847ec1ab add LocalWithRegion NllLivenessMap 2018-07-19 23:18:03 +05:30
Niko Matsakis
43b69c2777 make liveness generic over set of local variables
We used to hardcode that we wanted the liveness of *all* variables.
This can now be configured by selecting an alternative index type
V and providing a (partial) map from locals to that new type V.
2018-07-19 23:15:26 +05:30
dylan_DPC
4b5f0ba8c2 generic shuffle continues 2018-07-19 23:15:25 +05:30
dylan_DPC
d25231f84a use LiveVariableMap as trait bound 2018-07-19 23:15:24 +05:30
dylan_DPC
f2b5583f60 add trait structs and other changes from V to local 2018-07-19 23:15:16 +05:30