mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-21 23:17:16 +00:00
Use separate namespace for named metadata.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92931 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -528,10 +528,9 @@ static void WriteModuleMetadata(const ValueEnumerator &VE,
|
||||
}
|
||||
|
||||
// Write name.
|
||||
std::string Str = NMD->getNameStr();
|
||||
const char *StrBegin = Str.c_str();
|
||||
for (unsigned i = 0, e = Str.length(); i != e; ++i)
|
||||
Record.push_back(StrBegin[i]);
|
||||
StringRef Str = NMD->getName();
|
||||
for (unsigned i = 0, e = Str.size(); i != e; ++i)
|
||||
Record.push_back(Str[i]);
|
||||
Stream.EmitRecord(bitc::METADATA_NAME, Record, 0/*TODO*/);
|
||||
Record.clear();
|
||||
|
||||
|
||||
@@ -74,9 +74,10 @@ ValueEnumerator::ValueEnumerator(const Module *M) {
|
||||
// Enumerate types used by the type symbol table.
|
||||
EnumerateTypeSymbolTable(M->getTypeSymbolTable());
|
||||
|
||||
// Insert constants that are named at module level into the slot pool so that
|
||||
// the module symbol table can refer to them...
|
||||
// Insert constants and metadata that are named at module level into the slot
|
||||
// pool so that the module symbol table can refer to them...
|
||||
EnumerateValueSymbolTable(M->getValueSymbolTable());
|
||||
EnumerateMDSymbolTable(M->getMDSymbolTable());
|
||||
|
||||
SmallVector<std::pair<unsigned, MDNode*>, 8> MDs;
|
||||
|
||||
@@ -196,6 +197,14 @@ void ValueEnumerator::EnumerateValueSymbolTable(const ValueSymbolTable &VST) {
|
||||
EnumerateValue(VI->getValue());
|
||||
}
|
||||
|
||||
/// EnumerateMDSymbolTable - Insert all of the values in the specified metadata
|
||||
/// table.
|
||||
void ValueEnumerator::EnumerateMDSymbolTable(const MDSymbolTable &MST) {
|
||||
for (MDSymbolTable::const_iterator MI = MST.begin(), ME = MST.end();
|
||||
MI != ME; ++MI)
|
||||
EnumerateValue(MI->getValue());
|
||||
}
|
||||
|
||||
void ValueEnumerator::EnumerateMetadata(const MetadataBase *MD) {
|
||||
// Check to see if it's already in!
|
||||
unsigned &MDValueID = MDValueMap[MD];
|
||||
|
||||
@@ -30,6 +30,7 @@ class MetadataBase;
|
||||
class AttrListPtr;
|
||||
class TypeSymbolTable;
|
||||
class ValueSymbolTable;
|
||||
class MDSymbolTable;
|
||||
|
||||
class ValueEnumerator {
|
||||
public:
|
||||
@@ -133,6 +134,7 @@ private:
|
||||
|
||||
void EnumerateTypeSymbolTable(const TypeSymbolTable &ST);
|
||||
void EnumerateValueSymbolTable(const ValueSymbolTable &ST);
|
||||
void EnumerateMDSymbolTable(const MDSymbolTable &ST);
|
||||
};
|
||||
|
||||
} // End llvm namespace
|
||||
|
||||
Reference in New Issue
Block a user