[cfe-dev] Constants.cpp assertion raised

Michael Zolda michaelz at vmars.tuwien.ac.at
Wed Jan 9 01:00:21 PST 2008


Hi!


Here is another piece of code that causes a crash (current SVN version):

typedef struct {
  unsigned char c;
} t;

const t x = { 1 };


Output:

clang: /home/michaelz/proj/fortas/source/external/llvm/lib/VMCore/Constants.cpp:377: llvm::ConstantStruct::ConstantStruct(const llvm::StructType*, const std::vector<llvm::Constant*, std::allocator<llvm::Constant*> >&): Assertion `(C->getType() == T->getElementType(I-V.begin()) || ((T->getElementType(I-V.begin())->isAbstract() || C->getType()->isAbstract()) && T->getElementType(I-V.begin())->getTypeID() == C->getType()->getTypeID())) && "Initializer for struct element doesn'tmatch struct element type!"' failed.
clang((anonymous namespace)::PrintStackTrace()+0x22)[0x84514f8]
clang((anonymous namespace)::SignalHandler(int)+0x102)[0x84517a0]
[0xffffe420]
/lib/libc.so.6(abort+0x101)[0xb7c920f1]
/lib/libc.so.6(__assert_fail+0xf0)[0xb7c89b50]
clang(llvm::ConstantStruct::ConstantStruct(llvm::StructType const*, std::vector<llvm::Constant*, std::allocator<llvm::Constant*> > const&)+0x255)[0x839106b]
clang(llvm::ConstantCreator<llvm::ConstantStruct, llvm::StructType, std::vector<llvm::Constant*, std::allocator<llvm::Constant*> > >::create(llvm::StructType const*, std::vector<llvm::Constant*, std::allocator<llvm::Constant*> > const&)+0x2b)[0x839c6f7]
clang(llvm::ValueMap<std::vector<llvm::Constant*, std::allocator<llvm::Constant*> >, llvm::StructType, llvm::ConstantStruct, true>::getOrCreate(llvm::StructType const*, std::vector<llvm::Constant*, std::allocator<llvm::Constant*> > const&)+0xe4)[0x83983a6]
clang(llvm::ConstantStruct::get(llvm::StructType const*, std::vector<llvm::Constant*, std::allocator<llvm::Constant*> > const&)+0x6b)[0x8392eeb]
clang[0x828f476]
clang[0x828fe77]
clang(clang::CodeGen::CodeGenModule::EmitGlobalInit(clang::Expr const*)+0x18)[0x828fedc]
clang(clang::CodeGen::CodeGenModule::EmitGlobalVar(clang::FileVarDecl const*)+0x18b)[0x8290069]
clang(clang::CodeGen::CodeGenModule::EmitGlobalVarDeclarator(clang::FileVarDeclconst*)+0x1e)[0x8290142]
clang(clang::CodeGen::CodeGenGlobalVar(clang::CodeGen::CodeGenModule*, clang::FileVarDecl*)+0x18)[0x828de14]
clang((anonymous namespace)::CodeGenerator::HandleTopLevelDecl(clang::Decl*)+0x71)[0x8263959]
clang(clang::ParseAST(clang::Preprocessor&, clang::ASTConsumer*, bool)+0xfe)[0x82cfe8c]
clang[0x8280a87]
clang(main+0x5e6)[0x82813e2]
/lib/libc.so.6(__libc_start_main+0xe0)[0xb7c7c050]
clang[0x825f361]
Aborted


Cheers,
Michael
-- 
DI Michael ZOLDA
Institut fuer Technische Informatik / TU Wien
Treitlstrasse 3/3, 1040 Wien, Austria
Tel.: +43 (1) 5880158210, Fax: +43 (1) 5869149



More information about the cfe-dev mailing list