IR: Stop relying on GetStringMapEntryFromValue()

It relies on undefined behaviour.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223438 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith 2014-12-05 01:41:34 +00:00
parent 74fb019dd0
commit 397b575f81
2 changed files with 5 additions and 2 deletions

View File

@ -63,8 +63,9 @@ class MDString : public Metadata {
virtual void anchor();
MDString(const MDString &) LLVM_DELETED_FUNCTION;
StringMapEntry<MDString> *Entry;
explicit MDString(LLVMContext &Context)
: Metadata(Context, Value::MDStringVal) {}
: Metadata(Context, Value::MDStringVal), Entry(nullptr) {}
/// \brief Shadow Value::getName() to prevent its use.
StringRef getName() const LLVM_DELETED_FUNCTION;

View File

@ -48,11 +48,13 @@ MDString *MDString::get(LLVMContext &Context, StringRef Str) {
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 {
return StringMapEntry<MDString>::GetStringMapEntryFromValue(*this).first();
assert(Entry && "Expected to find string map entry");
return Entry->first();
}
//===----------------------------------------------------------------------===//