DebugInfo Verifier: verify the actual type.
authorManman Ren <manman.ren@gmail.com>
Tue, 23 Jul 2013 18:14:25 +0000 (18:14 +0000)
committerManman Ren <manman.ren@gmail.com>
Tue, 23 Jul 2013 18:14:25 +0000 (18:14 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186972 91177308-0d34-0410-b5e6-96231b3b80d8

lib/IR/DebugInfo.cpp

index 9d88ce0e50b3714b317223545cfb05141960b47e..28b703f64733ff5046a53a230df2d074ff230d9a 100644 (file)
@@ -458,6 +458,16 @@ bool DIType::Verify() const {
       Tag != dwarf::DW_TAG_friend &&
       getFilename().empty())
     return false;
+  // DIType is abstract, it should be a BasicType, a DerivedType or
+  // a CompositeType.
+  if (isBasicType())
+    DIBasicType(DbgNode).Verify();
+  else if (isCompositeType())
+    DICompositeType(DbgNode).Verify();
+  else if (isDerivedType())
+    DIDerivedType(DbgNode).Verify();
+  else
+    return false;
   return true;
 }