VMCore/DebugInfo.cpp: DICompileUnit::getSubprograms(): Check numOperands().
authorNAKAMURA Takumi <geek4civic@gmail.com>
Sat, 1 Dec 2012 02:23:45 +0000 (02:23 +0000)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Sat, 1 Dec 2012 02:23:45 +0000 (02:23 +0000)
2012-11-30-misched-dbg.ll had crashed. Then (MDNode)N was "!{}".
I am not sure it would be ill-formed or not.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169074 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/DebugInfo.cpp

index 5eea2ce9e0aee6b5fe23f57823b392c33def435b..a4fd705e30c18bcdf39a369736b750314f23a972 100644 (file)
@@ -659,8 +659,9 @@ DIArray DICompileUnit::getSubprograms() const {
     return DIArray();
 
   if (MDNode *N = dyn_cast_or_null<MDNode>(DbgNode->getOperand(12)))
-    if (MDNode *A = dyn_cast_or_null<MDNode>(N->getOperand(0)))
-      return DIArray(A);
+    if (N->getNumOperands() > 0)
+      if (MDNode *A = dyn_cast_or_null<MDNode>(N->getOperand(0)))
+        return DIArray(A);
   return DIArray();
 }