mirror of
https://github.com/RPCS3/llvm.git
synced 2025-04-02 13:21:43 +00:00
[MachineOutliner][NFC] Early exit pruning when candidates don't share an MBB
There's no way they can overlap in this case. This can save a few iterations when the candidate is close to the beginning of a MachineBasicBlock. It's particularly useful when the average length of a MachineBasicBlock in the program is small. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@346682 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d2e4943808
commit
412b368b3b
@ -1215,12 +1215,20 @@ void MachineOutliner::pruneOverlaps(
|
||||
if (C1.getStartIdx() > MaxCandidateLen)
|
||||
FarthestPossibleIdx = C1.getStartIdx() - MaxCandidateLen;
|
||||
|
||||
MachineBasicBlock *C1MBB = C1.getMBB();
|
||||
|
||||
// Compare against the candidates in the list that start at most
|
||||
// FarthestPossibleIdx indices away from C1. There are at most
|
||||
// MaxCandidateLen of these.
|
||||
for (auto Sit = It + 1; Sit != Et; Sit++) {
|
||||
Candidate &C2 = **Sit;
|
||||
|
||||
// If the two candidates don't belong to the same MBB, then we're done.
|
||||
// Because we sorted the candidates, there's no way that we'd find a
|
||||
// candidate in C1MBB after this point.
|
||||
if (C2.getMBB() != C1MBB)
|
||||
break;
|
||||
|
||||
// Is this candidate too far away to overlap?
|
||||
if (C2.getStartIdx() < FarthestPossibleIdx)
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user