diff options
| author | Dan Gohman <gohman@apple.com> | 2010-07-20 21:42:28 +0000 |
|---|---|---|
| committer | Dan Gohman <gohman@apple.com> | 2010-07-20 21:42:28 +0000 |
| commit | 85302f36b133a4ca759e7087011ef7370ca27d7e (patch) | |
| tree | 80e4eb366ba74a1e80c1f102b65ed2e869d7542d /lib/VMCore/LLVMContext.cpp | |
| parent | 776c0c64652dc1319b75705f198e2be24bd8994d (diff) | |
| download | external_llvm-85302f36b133a4ca759e7087011ef7370ca27d7e.zip external_llvm-85302f36b133a4ca759e7087011ef7370ca27d7e.tar.gz external_llvm-85302f36b133a4ca759e7087011ef7370ca27d7e.tar.bz2 | |
Add support for remapping metadata kind IDs when reading in a
bitcode file, so that two bitcode files where the same metadata kind
name happens to have been assigned a different ID can still be
linked together.
Eliminate the restriction that metadata kind IDs can't be 0.
Change MD_dbg from 1 to 0, because we can now, and because it's
less mysterious that way.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108939 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/LLVMContext.cpp')
| -rw-r--r-- | lib/VMCore/LLVMContext.cpp | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/lib/VMCore/LLVMContext.cpp b/lib/VMCore/LLVMContext.cpp index 4d61363..563c651 100644 --- a/lib/VMCore/LLVMContext.cpp +++ b/lib/VMCore/LLVMContext.cpp @@ -110,21 +110,18 @@ static bool isValidName(StringRef MDName) { /// getMDKindID - Return a unique non-zero ID for the specified metadata kind. unsigned LLVMContext::getMDKindID(StringRef Name) const { assert(isValidName(Name) && "Invalid MDNode name"); - - unsigned &Entry = pImpl->CustomMDKindNames[Name]; - + // If this is new, assign it its ID. - if (Entry == 0) Entry = pImpl->CustomMDKindNames.size(); - return Entry; + return + pImpl->CustomMDKindNames.GetOrCreateValue( + Name, pImpl->CustomMDKindNames.size()).second; } /// getHandlerNames - Populate client supplied smallvector using custome /// metadata name and ID. void LLVMContext::getMDKindNames(SmallVectorImpl<StringRef> &Names) const { - Names.resize(pImpl->CustomMDKindNames.size()+1); - Names[0] = ""; + Names.resize(pImpl->CustomMDKindNames.size()); for (StringMap<unsigned>::const_iterator I = pImpl->CustomMDKindNames.begin(), E = pImpl->CustomMDKindNames.end(); I != E; ++I) - // MD Handlers are numbered from 1. Names[I->second] = I->first(); } |
