aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-03-23 01:29:26 +0000
committerChris Lattner <sabre@nondot.org>2005-03-23 01:29:26 +0000
commit60cd9558ba1702f9f5011ffa97780c0efe5241d0 (patch)
tree24bfc0a9b461e048af68e2c9316fcbcd6fc9f7e0
parent1e9d1475bce167c9395defdc29d7983595244d9b (diff)
don't crash in some bad cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20776 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/AsmParser/llvmAsmParser.y3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y
index 0e88c01893..0e61b2beab 100644
--- a/lib/AsmParser/llvmAsmParser.y
+++ b/lib/AsmParser/llvmAsmParser.y
@@ -330,6 +330,9 @@ static Value *getVal(const Type *Ty, const ValID &ID) {
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...