Debug Info: In DIBuilder, the derived-from field of a DW_TAG_pointer_type
[oota-llvm.git] / include / llvm / DebugInfo.h
index ad0149476a177e48b0f1dd2b5647ab9d6258952a..506b84c49bf567e02f13f68e8ab9d81cc242a26f 100644 (file)
@@ -22,6 +22,7 @@
 #include "llvm/ADT/SmallPtrSet.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/StringRef.h"
+#include "llvm/IR/Metadata.h"
 #include "llvm/Support/Dwarf.h"
 
 namespace llvm {
@@ -204,6 +205,8 @@ public:
   /// Gets the parent scope for this scope node or returns a
   /// default constructed scope.
   DIScopeRef getContext() const;
+  /// If the scope node has a name, return that, else return an empty string.
+  StringRef getName() const;
   StringRef getFilename() const;
   StringRef getDirectory() const;
 
@@ -227,6 +230,16 @@ template <typename T> class DIRef {
 
 public:
   T resolve(const DITypeIdentifierMap &Map) const;
+  StringRef getName() const {
+    if (!Val)
+      return StringRef();
+
+    if (const MDNode *MD = dyn_cast<MDNode>(Val))
+      return T(MD).getName();
+
+    const MDString *MS = cast<MDString>(Val);
+    return MS->getString();
+  }
   operator Value *() const { return const_cast<Value *>(Val); }
 };
 
@@ -300,9 +313,6 @@ public:
   bool isStaticMember() const { return (getFlags() & FlagStaticMember) != 0; }
   bool isValid() const { return DbgNode && isType(); }
 
-  /// isUnsignedDIType - Return true if type encoding is unsigned.
-  bool isUnsignedDIType();
-
   /// replaceAllUsesWith - Replace all uses of debug info referenced by
   /// this descriptor.
   void replaceAllUsesWith(DIDescriptor &D);
@@ -330,11 +340,7 @@ class DIDerivedType : public DIType {
 public:
   explicit DIDerivedType(const MDNode *N = 0) : DIType(N) {}
 
-  DIType getTypeDerivedFrom() const { return getFieldAs<DIType>(9); }
-
-  /// getOriginalTypeSize - If this type is derived from a base type then
-  /// return base type size.
-  uint64_t getOriginalTypeSize() const;
+  DITypeRef getTypeDerivedFrom() const { return getFieldAs<DITypeRef>(9); }
 
   /// getObjCProperty - Return property node, if this ivar is
   /// associated with one.