1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00

Revert "Query the StringMap only once when creating MDString (NFC)"

This reverts commit r261030 and r261036.
(The revision was marked "approved" on phabricator, but some concerns
were raised on the mailing list. Thanks D. Blaikie for notifying me.)

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 261055
This commit is contained in:
Mehdi Amini 2016-02-17 02:18:58 +00:00
parent 6b1e9d59b2
commit 919bd12aad
2 changed files with 12 additions and 9 deletions

View File

@ -592,11 +592,9 @@ class MDString : public Metadata {
StringMapEntry<MDString> *Entry;
MDString() : Metadata(MDStringKind, Uniqued), Entry(nullptr) {}
MDString(MDString &&) : Metadata(MDStringKind, Uniqued) {}
public:
// This is a "default" move ctor, MSVC does not support "= default" here
MDString(MDString &&R)
: Metadata(MDStringKind, Uniqued), Entry(std::move(R.Entry)) {}
static MDString *get(LLVMContext &Context, StringRef Str);
static MDString *get(LLVMContext &Context, const char *Str) {
return get(Context, Str ? StringRef(Str) : StringRef());

View File

@ -397,12 +397,17 @@ void ValueAsMetadata::handleRAUW(Value *From, Value *To) {
MDString *MDString::get(LLVMContext &Context, StringRef Str) {
auto &Store = Context.pImpl->MDStringCache;
auto I = Store.insert(std::make_pair(Str, MDString()));
auto &MapEntry = I.first->getValue();
if (!I.second)
return &MapEntry;
MapEntry.Entry = &*I.first;
return &MapEntry;
auto I = Store.find(Str);
if (I != Store.end())
return &I->second;
auto *Entry =
StringMapEntry<MDString>::Create(Str, Store.getAllocator(), MDString());
bool WasInserted = Store.insert(Entry);
(void)WasInserted;
assert(WasInserted && "Expected entry to be inserted");
Entry->second.Entry = Entry;
return &Entry->second;
}
StringRef MDString::getString() const {