diff options
| author | Devang Patel <dpatel@apple.com> | 2009-06-24 22:42:39 +0000 |
|---|---|---|
| committer | Devang Patel <dpatel@apple.com> | 2009-06-24 22:42:39 +0000 |
| commit | 4c563168d563fb54b48b3ae76df283b79a4f8d54 (patch) | |
| tree | b69ace12dfdd506bc7640048e7324b8722f6ce7b /llvm/lib/VMCore/Constants.cpp | |
| parent | ae471cf3a994629a459aecc03746242a6b041a33 (diff) | |
| download | bcm5719-llvm-4c563168d563fb54b48b3ae76df283b79a4f8d54.tar.gz bcm5719-llvm-4c563168d563fb54b48b3ae76df283b79a4f8d54.zip | |
Add constructor to create MDString using std::string
llvm-svn: 74133
Diffstat (limited to 'llvm/lib/VMCore/Constants.cpp')
| -rw-r--r-- | llvm/lib/VMCore/Constants.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/VMCore/Constants.cpp b/llvm/lib/VMCore/Constants.cpp index c164a3b0c2c..ba8ab2e392f 100644 --- a/llvm/lib/VMCore/Constants.cpp +++ b/llvm/lib/VMCore/Constants.cpp @@ -1803,6 +1803,17 @@ MDString *MDString::get(const char *StrBegin, const char *StrEnd) { return S; } +MDString *MDString::get(const std::string &Str) { + sys::SmartScopedWriter<true> Writer(&*ConstantsLock); + StringMapEntry<MDString *> &Entry = MDStringCache->GetOrCreateValue( + Str.data(), Str.data() + Str.size()); + MDString *&S = Entry.getValue(); + if (!S) S = new MDString(Entry.getKeyData(), + Entry.getKeyData() + Entry.getKeyLength()); + + return S; +} + void MDString::destroyConstant() { sys::SmartScopedWriter<true> Writer(&*ConstantsLock); MDStringCache->erase(MDStringCache->find(StrBegin, StrEnd)); |

