mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
[Mips] Use unique_ptr to manage ownership.
Required some tweaking of ValueMap to accommodate a move-only value type. No functional change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235091 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
edc3aaefa6
commit
e6da045ce1
@ -147,9 +147,14 @@ public:
|
|||||||
// If the key is already in the map, it returns false and doesn't update the
|
// If the key is already in the map, it returns false and doesn't update the
|
||||||
// value.
|
// value.
|
||||||
std::pair<iterator, bool> insert(const std::pair<KeyT, ValueT> &KV) {
|
std::pair<iterator, bool> insert(const std::pair<KeyT, ValueT> &KV) {
|
||||||
std::pair<typename MapT::iterator, bool> map_result=
|
auto MapResult = Map.insert(std::make_pair(Wrap(KV.first), KV.second));
|
||||||
Map.insert(std::make_pair(Wrap(KV.first), KV.second));
|
return std::make_pair(iterator(MapResult.first), MapResult.second);
|
||||||
return std::make_pair(iterator(map_result.first), map_result.second);
|
}
|
||||||
|
|
||||||
|
std::pair<iterator, bool> insert(std::pair<KeyT, ValueT> &&KV) {
|
||||||
|
auto MapResult =
|
||||||
|
Map.insert(std::make_pair(Wrap(KV.first), std::move(KV.second)));
|
||||||
|
return std::make_pair(iterator(MapResult.first), MapResult.second);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// insert - Range insertion of pairs.
|
/// insert - Range insertion of pairs.
|
||||||
@ -256,9 +261,9 @@ public:
|
|||||||
// I could == Copy.Map->Map.end() if the onRAUW callback already
|
// I could == Copy.Map->Map.end() if the onRAUW callback already
|
||||||
// removed the old mapping.
|
// removed the old mapping.
|
||||||
if (I != Copy.Map->Map.end()) {
|
if (I != Copy.Map->Map.end()) {
|
||||||
ValueT Target(I->second);
|
ValueT Target(std::move(I->second));
|
||||||
Copy.Map->Map.erase(I); // Definitely destroys *this.
|
Copy.Map->Map.erase(I); // Definitely destroys *this.
|
||||||
Copy.Map->insert(std::make_pair(typed_new_key, Target));
|
Copy.Map->insert(std::make_pair(typed_new_key, std::move(Target)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,15 +60,7 @@ void MipsCallEntry::printCustom(raw_ostream &O) const {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
MipsFunctionInfo::~MipsFunctionInfo() {
|
MipsFunctionInfo::~MipsFunctionInfo() {}
|
||||||
for (StringMap<const MipsCallEntry *>::iterator
|
|
||||||
I = ExternalCallEntries.begin(), E = ExternalCallEntries.end(); I != E;
|
|
||||||
++I)
|
|
||||||
delete I->getValue();
|
|
||||||
|
|
||||||
for (const auto &Entry : GlobalCallEntries)
|
|
||||||
delete Entry.second;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool MipsFunctionInfo::globalBaseRegSet() const {
|
bool MipsFunctionInfo::globalBaseRegSet() const {
|
||||||
return GlobalBaseReg;
|
return GlobalBaseReg;
|
||||||
@ -125,21 +117,21 @@ bool MipsFunctionInfo::isEhDataRegFI(int FI) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
MachinePointerInfo MipsFunctionInfo::callPtrInfo(StringRef Name) {
|
MachinePointerInfo MipsFunctionInfo::callPtrInfo(StringRef Name) {
|
||||||
const MipsCallEntry *&E = ExternalCallEntries[Name];
|
std::unique_ptr<const MipsCallEntry> &E = ExternalCallEntries[Name];
|
||||||
|
|
||||||
if (!E)
|
if (!E)
|
||||||
E = new MipsCallEntry(Name);
|
E = llvm::make_unique<MipsCallEntry>(Name);
|
||||||
|
|
||||||
return MachinePointerInfo(E);
|
return MachinePointerInfo(E.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
MachinePointerInfo MipsFunctionInfo::callPtrInfo(const GlobalValue *Val) {
|
MachinePointerInfo MipsFunctionInfo::callPtrInfo(const GlobalValue *Val) {
|
||||||
const MipsCallEntry *&E = GlobalCallEntries[Val];
|
std::unique_ptr<const MipsCallEntry> &E = GlobalCallEntries[Val];
|
||||||
|
|
||||||
if (!E)
|
if (!E)
|
||||||
E = new MipsCallEntry(Val);
|
E = llvm::make_unique<MipsCallEntry>(Val);
|
||||||
|
|
||||||
return MachinePointerInfo(E);
|
return MachinePointerInfo(E.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
int MipsFunctionInfo::getMoveF64ViaSpillFI(const TargetRegisterClass *RC) {
|
int MipsFunctionInfo::getMoveF64ViaSpillFI(const TargetRegisterClass *RC) {
|
||||||
|
@ -144,8 +144,9 @@ private:
|
|||||||
int MoveF64ViaSpillFI;
|
int MoveF64ViaSpillFI;
|
||||||
|
|
||||||
/// MipsCallEntry maps.
|
/// MipsCallEntry maps.
|
||||||
StringMap<const MipsCallEntry *> ExternalCallEntries;
|
StringMap<std::unique_ptr<const MipsCallEntry>> ExternalCallEntries;
|
||||||
ValueMap<const GlobalValue *, const MipsCallEntry *> GlobalCallEntries;
|
ValueMap<const GlobalValue *, std::unique_ptr<const MipsCallEntry>>
|
||||||
|
GlobalCallEntries;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end of namespace llvm
|
} // end of namespace llvm
|
||||||
|
Loading…
Reference in New Issue
Block a user