From: Chris Lattner Date: Tue, 15 Apr 2003 16:09:31 +0000 (+0000) Subject: Fix bug: Assember2003-04-15-ConstantInitAssertion.llx X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=af76d0ea0bc15e87a32aad9c86808eba34026f20;p=llvm Fix bug: Assember2003-04-15-ConstantInitAssertion.llx git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5777 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index f2135a7ad25..fdc4213436e 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -919,8 +919,15 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr if (STy == 0) ThrowException("Cannot make struct constant with type: '" + (*$1)->getDescription() + "'!"); - // FIXME: TODO: Check to see that the constants are compatible with the type - // initializer! + + // Check to ensure that constants are compatible with the type initializer! + for (unsigned i = 0, e = $3->size(); i != e; ++i) + if ((*$3)[i]->getType() != STy->getElementTypes()[i]) + ThrowException("Expected type '" + + STy->getElementTypes()[i]->getDescription() + + "' for element #" + utostr(i) + + " of structure initializer!"); + $$ = ConstantStruct::get(STy, *$3); delete $1; delete $3; }