Remove MetadataBase class because it is not adding significant value.
authorDevang Patel <dpatel@apple.com>
Fri, 22 Jan 2010 22:52:10 +0000 (22:52 +0000)
committerDevang Patel <dpatel@apple.com>
Fri, 22 Jan 2010 22:52:10 +0000 (22:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94243 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Metadata.h
lib/AsmParser/LLParser.h
lib/Bitcode/Writer/ValueEnumerator.cpp
lib/Bitcode/Writer/ValueEnumerator.h
lib/CodeGen/AsmPrinter/DwarfDebug.cpp
lib/Linker/LinkModules.cpp
lib/VMCore/Metadata.cpp

index 8766ea8003d455fb58448380da95066417dce2db..f1e7a22a42fc33964c2a95e5617ee88f2c7f46a7 100644 (file)
@@ -30,27 +30,11 @@ template<typename ValueSubClass, typename ItemParentClass>
   class SymbolTableListTraits;
   
   
-//===----------------------------------------------------------------------===//
-// MetadataBase  - A base class for MDNode and MDString.
-class MetadataBase : public Value {
-protected:
-  MetadataBase(const Type *Ty, unsigned scid)
-    : Value(Ty, scid) {}
-
-public:
-
-  /// Methods for support type inquiry through isa, cast, and dyn_cast:
-  static inline bool classof(const MetadataBase *) { return true; }
-  static bool classof(const Value *V) {
-    return V->getValueID() == MDStringVal || V->getValueID() == MDNodeVal;
-  }
-};
-
 //===----------------------------------------------------------------------===//
 /// MDString - a single uniqued string.
 /// These are used to efficiently contain a byte sequence for metadata.
 /// MDString is always unnamd.
-class MDString : public MetadataBase {
+class MDString : public Value {
   MDString(const MDString &);            // DO NOT IMPLEMENT
 
   StringRef Str;
@@ -87,7 +71,7 @@ class MDNodeOperand;
   
 //===----------------------------------------------------------------------===//
 /// MDNode - a tuple of other values.
-class MDNode : public MetadataBase, public FoldingSetNode {
+class MDNode : public Value, public FoldingSetNode {
   MDNode(const MDNode &);                // DO NOT IMPLEMENT
   void operator=(const MDNode &);        // DO NOT IMPLEMENT
   friend class MDNodeOperand;
index bea0593faa67f191af8dc7d301f718abe5388952..85c07ffa8fd1039626eda418294452a01afd4273 100644 (file)
@@ -29,7 +29,6 @@ namespace llvm {
   class Instruction;
   class Constant;
   class GlobalValue;
-  class MetadataBase;
   class MDString;
   class MDNode;
 
index cb139e5e41fbf620ad7d167e34e1ff16496a614d..29a779d810b5511c53a77542e63f93b87d04d11f 100644 (file)
@@ -140,7 +140,7 @@ void ValueEnumerator::setInstructionID(const Instruction *I) {
 }
 
 unsigned ValueEnumerator::getValueID(const Value *V) const {
-  if (isa<MetadataBase>(V)) {
+  if (isa<MDNode>(V) || isa<MDString>(V)) {
     ValueMapType::const_iterator I = MDValueMap.find(V);
     assert(I != MDValueMap.end() && "Value not in slotcalculator!");
     return I->second-1;
@@ -229,7 +229,8 @@ void ValueEnumerator::EnumerateNamedMDNode(const NamedMDNode *MD) {
   MDValueMap[MD] = Values.size();
 }
 
-void ValueEnumerator::EnumerateMetadata(const MetadataBase *MD) {
+void ValueEnumerator::EnumerateMetadata(const Value *MD) {
+  assert(isa<MDNode>(MD) || isa<MDString>(MD) && "Invalid metadata kind");
   // Check to see if it's already in!
   unsigned &MDValueID = MDValueMap[MD];
   if (MDValueID) {
@@ -262,8 +263,8 @@ void ValueEnumerator::EnumerateMetadata(const MetadataBase *MD) {
 
 void ValueEnumerator::EnumerateValue(const Value *V) {
   assert(!V->getType()->isVoidTy() && "Can't insert void values!");
-  if (const MetadataBase *MB = dyn_cast<MetadataBase>(V))
-    return EnumerateMetadata(MB);
+  if (isa<MDNode>(V) || isa<MDString>(V))
+    return EnumerateMetadata(V);
   else if (const NamedMDNode *NMD = dyn_cast<NamedMDNode>(V))
     return EnumerateNamedMDNode(NMD);
 
index c50fe9ce76725e6b1a1a0fa94085e9a2909d38d5..4f8ebf55e199aebdda0f23ceb92742428b1f938b 100644 (file)
@@ -127,7 +127,7 @@ public:
 private:
   void OptimizeConstants(unsigned CstStart, unsigned CstEnd);
     
-  void EnumerateMetadata(const MetadataBase *MD);
+  void EnumerateMetadata(const Value *MD);
   void EnumerateNamedMDNode(const NamedMDNode *NMD);
   void EnumerateValue(const Value *V);
   void EnumerateType(const Type *T);
index cd4b66fcdc649190dafe0ff2218b9c438afc24a2..4a762b9f1445d9fb32fe9a8c3e9bd0340283f70c 100644 (file)
@@ -1910,8 +1910,7 @@ void DwarfDebug::collectVariableInfo() {
   MachineModuleInfo::VariableDbgInfoMapTy &VMap = MMI->getVariableDbgInfo();
   for (MachineModuleInfo::VariableDbgInfoMapTy::iterator VI = VMap.begin(),
          VE = VMap.end(); VI != VE; ++VI) {
-    MetadataBase *MB = VI->first;
-    MDNode *Var = dyn_cast_or_null<MDNode>(MB);
+    MDNode *Var = VI->first;
     if (!Var) continue;
     DIVariable DV (Var);
     std::pair< unsigned, MDNode *> VP = VI->second;
index dcd696c70d4c219c1729cf7b52ac68258d3c963e..e2cd47a21b39d7abe75bb5884ea9f4bc8abbf212 100644 (file)
@@ -392,7 +392,7 @@ static Value *RemapOperand(const Value *In,
       assert(!isa<GlobalValue>(CPV) && "Unmapped global?");
       llvm_unreachable("Unknown type of derived type constant value!");
     }
-  } else if (isa<MetadataBase>(In)) {
+  } else if (isa<MDNode>(In) ||  isa<MDString>(In)) {
     Result = const_cast<Value*>(In);
   } else if (isa<InlineAsm>(In)) {
     Result = const_cast<Value*>(In);
index 7141fbd843d3614c016f1be8981533565904402c..ee8e713fc1ea98b0e2e033bd146690e64d5a941c 100644 (file)
@@ -28,7 +28,7 @@ using namespace llvm;
 //
 
 MDString::MDString(LLVMContext &C, StringRef S)
-  : MetadataBase(Type::getMetadataTy(C), Value::MDStringVal), Str(S) {}
+  : Value(Type::getMetadataTy(C), Value::MDStringVal), Str(S) {}
 
 MDString *MDString::get(LLVMContext &Context, StringRef Str) {
   LLVMContextImpl *pImpl = Context.pImpl;
@@ -93,7 +93,7 @@ static MDNodeOperand *getOperandPtr(MDNode *N, unsigned Op) {
 
 MDNode::MDNode(LLVMContext &C, Value *const *Vals, unsigned NumVals,
                bool isFunctionLocal)
-: MetadataBase(Type::getMetadataTy(C), Value::MDNodeVal) {
+: Value(Type::getMetadataTy(C), Value::MDNodeVal) {
   NumOperands = NumVals;
 
   if (isFunctionLocal)