don't crash in some bad cases.

llvm-svn: 20776
diff --git a/llvm/lib/AsmParser/llvmAsmParser.y b/llvm/lib/AsmParser/llvmAsmParser.y
index 0e88c01..0e61b2b 100644
--- a/llvm/lib/AsmParser/llvmAsmParser.y
+++ b/llvm/lib/AsmParser/llvmAsmParser.y
@@ -330,6 +330,9 @@
   Value *V = getValNonImprovising(Ty, ID);
   if (V) return V;
 
+  if (!Ty->isFirstClassType() && !isa<OpaqueType>(Ty))
+    ThrowException("Invalid use of a composite type!");
+
   // If we reached here, we referenced either a symbol that we don't know about
   // or an id number that hasn't been read yet.  We may be referencing something
   // forward, so just create an entry to be resolved later and get to it...