Fix PR463

llvm-svn: 18303
diff --git a/llvm/lib/AsmParser/llvmAsmParser.y b/llvm/lib/AsmParser/llvmAsmParser.y
index 1f6b539..4a4803e 100644
--- a/llvm/lib/AsmParser/llvmAsmParser.y
+++ b/llvm/lib/AsmParser/llvmAsmParser.y
@@ -1294,7 +1294,10 @@
     delete $1;
   }
   | Types ZEROINITIALIZER {
-    $$ = Constant::getNullValue($1->get());
+    const Type *Ty = $1->get();
+    if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty))
+      ThrowException("Cannot create a null initialized value of this type!");
+    $$ = Constant::getNullValue(Ty);
     delete $1;
   };