call void @llvm.dbg.declare(metadata !{i32* null}, metadata !1)
authorDevang Patel <dpatel@apple.com>
Fri, 19 Mar 2010 21:06:24 +0000 (21:06 +0000)
committerDevang Patel <dpatel@apple.com>
Fri, 19 Mar 2010 21:06:24 +0000 (21:06 +0000)
is valid, but not useful, when variable  identified by !1 is optimized away by the optimizer.

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

lib/VMCore/Verifier.cpp
test/DebugInfo/2010-03-19-DbgDeclare.ll [new file with mode: 0644]

index 721e96a0f552a63d7026087d34529d42fe2ad1e7..f1413825697a51c1152052eb77a2186657d01a39 100644 (file)
@@ -1623,10 +1623,6 @@ void Verifier::visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst &CI) {
     MDNode *MD = cast<MDNode>(CI.getOperand(1));
     Assert1(MD->getNumOperands() == 1,
                 "invalid llvm.dbg.declare intrinsic call 2", &CI);
-    if (MD->getOperand(0))
-      if (Constant *C = dyn_cast<Constant>(MD->getOperand(0)))
-        Assert1(C && !isa<ConstantPointerNull>(C),
-                "invalid llvm.dbg.declare intrinsic call 3", &CI);
   } break;
   case Intrinsic::memcpy:
   case Intrinsic::memmove:
diff --git a/test/DebugInfo/2010-03-19-DbgDeclare.ll b/test/DebugInfo/2010-03-19-DbgDeclare.ll
new file mode 100644 (file)
index 0000000..1f7a889
--- /dev/null
@@ -0,0 +1,12 @@
+; RUN: llvm-as < %s | opt -verify -disable-output
+
+define void @Foo(i32 %a, i32 %b) {
+entry:
+  call void @llvm.dbg.declare(metadata !{i32* null}, metadata !1)
+  ret void
+}
+
+!0 = metadata !{i32 662302, i32 26, metadata !1, null}
+!1 = metadata !{i32 4, metadata !"foo"}
+
+declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone