forked from OSchip/llvm-project
[llvm-mca] Refactor method RegisterFile::collectWrites(). NFCI
Rather than calling std::find in a loop, just sort the vector and remove duplicate entries at the end of the function. Also, move the debug print at the end of the function, and query the MCRegisterInfo to print register names rather than physreg IDs. No functional change intended. llvm-svn: 335837
This commit is contained in:
parent
ba7b824939
commit
35abd3e39e
|
@ -181,20 +181,26 @@ void RegisterFile::collectWrites(SmallVectorImpl<WriteState *> &Writes,
|
|||
unsigned RegID) const {
|
||||
assert(RegID && RegID < RegisterMappings.size());
|
||||
WriteState *WS = RegisterMappings[RegID].first;
|
||||
if (WS) {
|
||||
LLVM_DEBUG(dbgs() << "Found a dependent use of RegID=" << RegID << '\n');
|
||||
if (WS)
|
||||
Writes.push_back(WS);
|
||||
}
|
||||
|
||||
// Handle potential partial register updates.
|
||||
for (MCSubRegIterator I(RegID, &MRI); I.isValid(); ++I) {
|
||||
WS = RegisterMappings[*I].first;
|
||||
if (WS && std::find(Writes.begin(), Writes.end(), WS) == Writes.end()) {
|
||||
LLVM_DEBUG(dbgs() << "Found a dependent use of subReg " << *I
|
||||
<< " (part of " << RegID << ")\n");
|
||||
if (WS)
|
||||
Writes.push_back(WS);
|
||||
}
|
||||
}
|
||||
|
||||
// Remove duplicate entries and resize the input vector.
|
||||
llvm::sort(Writes.begin(), Writes.end());
|
||||
auto It = std::unique(Writes.begin(), Writes.end());
|
||||
Writes.resize(std::distance(Writes.begin(), It));
|
||||
|
||||
LLVM_DEBUG({
|
||||
for (const WriteState *WS : Writes)
|
||||
dbgs() << "Found a dependent use of Register "
|
||||
<< MRI.getName(WS->getRegisterID()) << "\n";
|
||||
});
|
||||
}
|
||||
|
||||
unsigned RegisterFile::isAvailable(ArrayRef<unsigned> Regs) const {
|
||||
|
|
Loading…
Reference in New Issue