Skip to content

Commit

Permalink
Auto merge of #53733 - nnethercote:avoid-unroll_place, r=nikomatsakis
Browse files Browse the repository at this point in the history
Avoid calling `unroll_place()` in a common case.

This reduces the execution time for `ucd-check` by 25%.

r? @nikomatsakis
  • Loading branch information
bors committed Aug 30, 2018
2 parents f1a5373 + 130e556 commit 03fe4c7
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/librustc_mir/borrow_check/places_conflict.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,14 @@ pub(super) fn places_conflict<'gcx, 'tcx>(
borrow_place, access_place, access
);

// This Local/Local case is handled by the more general code below, but
// it's so common that it's a speed win to check for it first.
if let Place::Local(l1) = borrow_place {
if let Place::Local(l2) = access_place {
return l1 == l2;
}
}

unroll_place(borrow_place, None, |borrow_components| {
unroll_place(access_place, None, |access_components| {
place_components_conflict(tcx, mir, borrow_components, access_components, access)
Expand Down

0 comments on commit 03fe4c7

Please sign in to comment.