[llvm] r223438 - IR: Stop relying on GetStringMapEntryFromValue()
Duncan P. N. Exon Smith
dexonsmith at apple.com
Thu Dec 4 17:41:34 PST 2014
Author: dexonsmith
Date: Thu Dec 4 19:41:34 2014
New Revision: 223438
URL: http://llvm.org/viewvc/llvm-project?rev=223438&view=rev
Log:
IR: Stop relying on GetStringMapEntryFromValue()
It relies on undefined behaviour.
Modified:
llvm/trunk/include/llvm/IR/Metadata.h
llvm/trunk/lib/IR/Metadata.cpp
Modified: llvm/trunk/include/llvm/IR/Metadata.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Metadata.h?rev=223438&r1=223437&r2=223438&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/Metadata.h (original)
+++ llvm/trunk/include/llvm/IR/Metadata.h Thu Dec 4 19:41:34 2014
@@ -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;
Modified: llvm/trunk/lib/IR/Metadata.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Metadata.cpp?rev=223438&r1=223437&r2=223438&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Metadata.cpp (original)
+++ llvm/trunk/lib/IR/Metadata.cpp Thu Dec 4 19:41:34 2014
@@ -48,11 +48,13 @@ MDString *MDString::get(LLVMContext &Con
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();
}
//===----------------------------------------------------------------------===//
More information about the llvm-commits
mailing list