Niko Matsakis
e7a9e7aef2
extract a enabled
helper to remove some ad-hoc conditionals
2018-06-26 10:31:49 -04:00
Niko Matsakis
13e77934e5
create InfcxTypeOp
that only depend on an infcx
...
We want any add'l context required to be passed through the struct
itself.
2018-06-26 10:31:49 -04:00
Niko Matsakis
846cc263cf
make normalize into an op
2018-06-26 10:31:49 -04:00
Niko Matsakis
f998628e5c
let trivial_noop
take ownership of self
2018-06-26 10:31:49 -04:00
Niko Matsakis
8147d17d8e
make normalize
take ownership of the thing to be normalized
2018-06-26 10:31:49 -04:00
Niko Matsakis
214d7650c9
introduce prove_predicates
type op
2018-06-26 10:31:49 -04:00
Niko Matsakis
7c62461c39
introduce trivial_noop
to accommodate micro-optimizations
2018-06-26 10:31:49 -04:00
Niko Matsakis
9b4fe44280
introduce Eq
type-op
2018-06-26 10:31:49 -04:00
Niko Matsakis
2b52793f74
introduce Subtype
type_op
2018-06-26 10:31:49 -04:00
Niko Matsakis
909b10c33b
introduce type_op
2018-06-26 10:31:49 -04:00
Santiago Pastorino
d3defcaf3b
Run rustfmt
2018-06-19 21:24:39 -03:00
Santiago Pastorino
f4fc43cb20
Suggest that values are dropped in the opposite order they are defined
2018-06-19 21:21:50 -03:00
Niko Matsakis
2e25bed9b1
remove some #[inline(never)]
2018-06-09 17:20:15 -04:00
Niko Matsakis
908c1f2f0c
use DUMMY_NODE_ID
as the body_id
during NLL type-checking
...
The choice is arbitrary since there is only one involved.
2018-06-09 11:06:41 -04:00
Niko Matsakis
6a5a4874a0
convert type-check constraints into NLL constraints on the fly
...
We used to accumulate a vector of type-check constraints, but now we
generate them as we go, and just store the NLL-style
`OutlivesConstraint` and `TypeTest` information.
2018-06-09 11:02:14 -04:00
Niko Matsakis
ba6a7f7500
rename Constraint
to OutlivesConstraint
2018-06-09 11:02:14 -04:00
Niko Matsakis
9980415fbd
key drop-data computation by ty, not var
2018-06-09 11:02:14 -04:00
Niko Matsakis
d476147629
cache the dropck_outlives
computation per variable
2018-06-09 11:02:14 -04:00
Niko Matsakis
780f6c52cc
extract out fully_perform_op_and_get_region_constraints
2018-06-09 11:02:13 -04:00
Niko Matsakis
7ff89805fe
put the RegionConstraintData
into an Rc
2018-06-09 11:02:13 -04:00
Niko Matsakis
8825f42a07
librustc_mir/borrow_check/nll/type_check/mod.rs: rustfmt
2018-06-09 11:02:13 -04:00
Niko Matsakis
55c6357daf
micro-optimize empty predicate and normalize lists
2018-06-09 11:02:13 -04:00
Niko Matsakis
73a09f35b1
skip eq_types
and sub_types
when the two types are equal
2018-06-09 11:02:13 -04:00
Niko Matsakis
956e2f8348
add some instrumentation
2018-06-09 11:02:13 -04:00
Gergely Nagy
f1c9247663
NLL performance boost
2018-06-06 17:31:24 +02:00
Vytautas Astrauskas
265b04df9a
Change the log level of the message reporting the selected Polonius algorithm to debug.
2018-06-02 14:20:04 +02:00
Vytautas Astrauskas
1404c00eb0
Allow choosing Polonius algorithm via environment variable POLONIUS_ALGORITHM.
2018-06-02 14:17:12 +02:00
bors
20af72b943
Auto merge of #51106 - davidtwco:issue-50934, r=nikomatsakis
...
Optimize the way that loans are killed in borrowck dataflow
Fixes #50934 .
r? @nikomatsakis
2018-05-30 09:24:20 +00:00
Felix S. Klock II
24abe6f363
rust-lang/rust#27282 : Add StatementKind::ReadForMatch
to MIR.
...
(This is just the data structure changes and some boilerplate match
code that followed from it; the actual emission of these statements
comes in a follow-up commit.)
2018-05-29 23:01:36 +02:00
Niko Matsakis
948f77c71f
tweak debug output some more
2018-05-29 15:09:37 -04:00
Santiago Pastorino
a8b36c9e9a
Run rustfmt
2018-05-29 10:19:47 -03:00
Douglas Campos
b45aebfdf6
it compiles, but we do not use the output yet
2018-05-29 10:19:46 -03:00
kennytm
e667e7be60
Rollup merge of #51047 - spastorino:use_polonius_engine_facts, r=nikomatsakis
...
Use AllFacts from polonius-engine
2018-05-26 19:32:22 +08:00
bors
910e29a45b
Auto merge of #50998 - bobtwinkles:nll_facts_invalidate_followup, r=nikomatsakis
...
NLL facts invalidate followup
Refactors to share code with the rest of borrow-check.
r? @nikomatsakis
2018-05-25 06:26:26 +00:00
Santiago Pastorino
8429d11a0b
Use AllFacts from polonius-engine
2018-05-24 19:56:02 -03:00
bobtwinkles
ed72977475
Remove unnecessary type annotations
2018-05-23 07:57:21 -07:00
bors
531e4ab7bc
Auto merge of #50798 - bobtwinkles:nll_facts_invalidate, r=nikomatsakis
...
Generate "invalidates" facts when -Znll-facts is passed
Most of the new code is copied directly from the heart of the MIR borrowchecker. I was expecting more fundamental structural changes, hence the copying. This appears to work as it stands, but I'd like to submit a follow-up PR to reduce code duplication. I figured that could wait though, since this is blocking a large amount of work in the borrow check repository and I'm out of time for tonight =).
r? @nikomatsakis
2018-05-23 07:15:34 +00:00
Eduard-Mihai Burtescu
7e4d8718cb
rustc: use intern_* instead of mk_* where possible.
2018-05-21 12:13:19 +03:00
Eduard-Mihai Burtescu
e3df729c25
rustc: make mk_substs_trait take &[Kind] instead of &[Ty].
2018-05-21 12:13:17 +03:00
bobtwinkles
e62fa27071
Refactor borrowck to share more code with fact dumping
...
Following up my changes in #50798 , I wanted to grab at least the low-hanging
fruit for code deduplication.
2018-05-18 23:47:48 -07:00
bors
612ca14b81
Auto merge of #50593 - nikomatsakis:nll-no-location, r=nikomatsakis
...
stop considering location when computing outlives relationships
This doesn't (yet?) use SEME regions, but it does ignore the location for outlives constraints. This makes (I believe) NLL significantly faster -- but we should do some benchmarks. It regresses the "get-default" family of use cases for NLL, which is a shame, but keeps the other benefits, and thus represents a decent step forward.
r? @pnkfelix
2018-05-17 21:36:43 +00:00
Mark Simulacrum
9e3432447a
Switch to 1.26 bootstrap compiler
2018-05-17 08:47:25 -06:00
bobtwinkles
965eef92c4
invalidates: properly handle terminators
2018-05-17 00:49:06 -07:00
bobtwinkles
a82c097296
Fix tidy errors
2018-05-16 07:08:45 -07:00
bobtwinkles
0c902cfeca
Complete implementation of invalidates facts
2018-05-15 22:31:29 -07:00
bobtwinkles
3b36fa8c3f
Get closer to successful compilation
2018-05-14 23:15:56 -07:00
bobtwinkles
f03518bfad
Framework and rough implementation for invalidates facts
...
this probably doesn't compile and definitely doesn't work
2018-05-14 20:49:02 -07:00
Mark Simulacrum
d7f5e1f5d1
Rollup merge of #50550 - llogiq:fmt-result, r=petrochenkov
...
use fmt::Result where applicable
This is a quite boring PR, but I think the type alias improves readability, so why not use it?
2018-05-12 07:32:27 -06:00
John Kåre Alsaker
fdd9787777
Introduce ConstValue and use it instead of miri's Value for constant values
2018-05-11 13:01:44 +02:00
Niko Matsakis
c990309f61
rustfmt to pacify the mercilous tidy
2018-05-10 05:52:43 -04:00