Skip to content

Commit

Permalink
Avoid calling unroll_place() in a common case.
Browse files Browse the repository at this point in the history
This reduces the execution time for `ucd-check` by 25%.
  • Loading branch information
nnethercote committed Aug 27, 2018
1 parent 3a2c603 commit 130e556
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/librustc_mir/borrow_check/places_conflict.rs
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 130e556

Please sign in to comment.