summaryrefslogtreecommitdiff
path: root/lib/IR
diff options
context:
space:
mode:
authorManman Ren <manman.ren@gmail.com>2013-07-25 19:33:30 +0000
committerManman Ren <manman.ren@gmail.com>2013-07-25 19:33:30 +0000
commitcb420a4bc066b0b85e50b0c362ae20519d28788c (patch)
tree43085a023b3855baf7f3fe8c8a0e0e9c4e508d1a /lib/IR
parentb0122be8c30149301cd2348a23ebfbee3406b272 (diff)
downloadllvm-cb420a4bc066b0b85e50b0c362ae20519d28788c.tar.gz
llvm-cb420a4bc066b0b85e50b0c362ae20519d28788c.tar.bz2
llvm-cb420a4bc066b0b85e50b0c362ae20519d28788c.tar.xz
Debug Info: improve the verifier to check field types.
Make sure the context field of DIType is MDNode. Fix testing cases to make them pass the verifier. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187150 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/IR')
-rw-r--r--lib/IR/DebugInfo.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/IR/DebugInfo.cpp b/lib/IR/DebugInfo.cpp
index d171fc6c5b..bbdff5e483 100644
--- a/lib/IR/DebugInfo.cpp
+++ b/lib/IR/DebugInfo.cpp
@@ -420,6 +420,10 @@ static bool fieldIsMDNode(const MDNode *DbgNode, unsigned Elt) {
bool DIType::Verify() const {
if (!isType())
return false;
+ // Make sure Context @ field 2 is MDNode.
+ if (!fieldIsMDNode(DbgNode, 2))
+ return false;
+
// FIXME: Sink this into the various subclass verifies.
unsigned Tag = getTag();
if (!isBasicType() && Tag != dwarf::DW_TAG_const_type &&