about summary refs log tree commit diff
path: root/src/librustc_mir/dataflow
AgeCommit message (Collapse)AuthorLines
2018-06-19Avoid allocations in `has_any_child_of`.Nicholas Nethercote-11/+18
`has_any_child_of` is hot. It allocates a `Vec` that almost always doesn't exceed a length of 1. This patch peels off the first iteration of the loop, avoiding the need for the `Vec` creation in ~99% of cases.
2018-06-06When NLL has illegal move due to borrowed content, provide feedback about ↵Felix S. Klock II-5/+20
why the move wasn't a copy. This should address #51190.
2018-05-30Auto merge of #51106 - davidtwco:issue-50934, r=nikomatsakisbors-13/+77
Optimize the way that loans are killed in borrowck dataflow Fixes #50934. r? @nikomatsakis
2018-05-29rust-lang/rust#27282: Add `StatementKind::ReadForMatch` to MIR.Felix S. Klock II-0/+4
(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-29fix off by one errorNiko Matsakis-1/+1
2018-05-29tweak debug output some moreNiko Matsakis-2/+7
2018-05-29Ensure that all statements in block are visited not just successors of a block.David Wood-8/+18
2018-05-29add some debugging statementsNiko Matsakis-0/+3
2018-05-29Refactored DFS to be much cleaner. Added continue after noting that borrow ↵David Wood-99/+27
is out of scope at location.
2018-05-27Ensure that depth first search does not get stuck in cycles.David Wood-12/+28
2018-05-27Ensure that we don't skip the last statement.David Wood-2/+2
2018-05-27Use precomputed DFS of borrows that out of scope at a location.David Wood-14/+116
2018-05-24Use AllFacts from polonius-engineSantiago Pastorino-1/+1
2018-05-19Remove extra calls to kill_loans_out_of_scope_at_location - keep only ↵David Wood-5/+0
before_statement_effect and before_terminator_effect.
2018-05-03Instrument `statement_effect_on_borrows` for the `lhs = &place` case.Felix S. Klock II-0/+6
2018-05-01rustc: return impl Iterator from Terminator(Kind)::successors(_mut).Eduard-Mihai Burtescu-3/+3
2018-04-15remove -Znll -- borrowck=mir implies nll nowNiko Matsakis-31/+20
2018-04-15stop using `borrows` for anything but iterating over live dataNiko Matsakis-26/+1
2018-04-15thread borrow-set around moreNiko Matsakis-3/+3
2018-04-15remove `ReserveOrActivateIndex`Niko Matsakis-62/+20
2018-04-15use the `activations_at_location` map to check activationsNiko Matsakis-0/+7
Not gen bits
2018-04-15encapsulate ReserveOrActivateIndex into the borrows dataflowNiko Matsakis-1/+0
2018-04-15construct the `BorrowSet` outside of `borrows`Niko Matsakis-8/+8
2018-04-15extract code to build borrow-set into `borrow_check::borrow_set`Niko Matsakis-404/+12
Also: - Extract common helper functions into a helper trait. - Kill a bit of dead code.
2018-04-15relocate `BorrowData` etc into `borrow_check::borrow_set`Niko Matsakis-77/+26
2018-04-15gather activation locations for 2-phase borrows in 1 passNiko Matsakis-98/+139
2018-04-15remove `assigned_map` (appears to be dead code)Niko Matsakis-9/+0
2018-04-07Auto merge of #49678 - bobtwinkles:fix_multiple_activations, r=nikomatsakisbors-14/+8
two-phase borrows: support multiple activations in one statement The need for this has arisen since the introduction of two-phase borrows on method autorefs in #49348. r'ing @pnkfelix to keep things off Niko's plate so he can make this redundant, and @pnkfelix is familiar with the code. Fixes #49635 Fixes #49662 r? @pnkfelix
2018-04-06Use `Ident` instead of `Name` in `MetaItem`Vadim Petrochenkov-1/+1
2018-04-04two-phase borrows: support multiple activations in one statementbobtwinkles-14/+8
The need for this has arisen since the introduction of two-phase borrows on method autorefs. Fixes 49635 Fixes 49662
2018-04-02avoid IdxSets containing garbage above the universe lengthAriel Ben-Yehuda-2/+2
This makes sure that all bits in each IdxSet between the universe length and the end of the word are all zero instead of being in an indeterminate state. This fixes a crash with RUST_LOG=rustc_mir, and is probably a good idea anyway.
2018-03-24Auto merge of #48482 - davidtwco:issue-47184, r=nikomatsakisbors-0/+2
NLL should identify and respect the lifetime annotations that the user wrote Part of #47184. r? @nikomatsakis
2018-03-22Added UserAssertTy statement.David Wood-0/+2
2018-03-17Use num::NonZero* instead of NonZero<_> in rustc and testsSimon Sapin-3/+3
2018-03-15Rollup merge of #48840 - varkor:idxset-cleanup, r=pnkfelixkennytm-18/+13
Remove some unnecessary IdxSet methods This replaces `IdxSet:: reset_to_empty` with `IdxSet:: clear`, and `IdxSet::elems`/`IdxSet::each_bit` with `IdxSet::iter`. Based on some [comments on #rustc](https://botbot.me/mozilla/rustc/2018-01-23/?msg=96063396). r? @pnkfelix
2018-03-09Remove some commented out codebobtwinkles-12/+0
Left over from prior experimentation, no longer required.
2018-03-09Check for two_phase_borrows in the right placebobtwinkles-1/+1
Fix a small compilation issue after I missed a critical change after rebasing yesterday (ref c933440)
2018-03-09Fix tests after two-phase borrow rewritebobtwinkles-19/+12
2018-03-09Remove unused field on BorrowDatabobtwinkles-3/+1
2018-03-09Complete re-implementation of 2-phase borrowsbobtwinkles-32/+32
See #48431 for discussion as to why this was necessary and what we hoped to accomplish. A brief summary: - the first implementation of 2-phase borrows was hard to limit in the way we wanted. That is, it was too good at accepting all 2-phase borrows rather than just autorefs =) - Numerous diagnostic regressions were introduced by 2-phase borrow support which were difficult to fix
2018-03-09mir dataflow: change graphviz outputbobtwinkles-142/+143
The new output format is perhaps a little more readable. As a bonus, we get labels on the outgoing edges to more easily corroborate the dataflow with the plain MIR graphviz output.
2018-03-09Finally start down the right pathbobtwinkles-371/+386
2018-03-09Rename BorrowData::location to BorrowData::reserve_locationbobtwinkles-4/+7
in preparation for rewritting two phase borrow support
2018-03-08Fully use miri in transOliver Schneider-1/+1
2018-03-06Remove IdxSet::elemsvarkor-8/+6
2018-03-06Remove IdxSet::each_bitvarkor-6/+3
2018-03-06Remove IdxSet::reset_to_emptyvarkor-4/+4
2018-03-02Run Rustfix on librustc_mirManish Goregaokar-1/+1
2018-03-02Replace Rc with Lrc for shared dataJohn Kåre Alsaker-2/+3
2018-02-24Rollup merge of #48232 - fpoli:master, r=pnkfelixManish Goregaokar-3/+6
mir: Gather move at SwitchInt, Assert terminators Previously, `_1` was not marked as "definitely uninitialized" after a `switchInt(move _1)` terminator. I think the same goes for the `assert` terminator. Related discussion: https://internals.rust-lang.org/t/why-is-2-definitely-initialized-after-switchint-move-2/6760