[cfe-dev] Bug: assertion "only C++ supports non-constant static initializers!"

Max Kellermann max at duempel.org
Thu Jan 29 01:19:23 PST 2009


Hi,

with clang r63301, I get the following assertion failure:

clang: CGDecl.cpp:93: llvm::GlobalValue*
clang::CodeGen::CodeGenFunction::GenerateStaticBlockVarDecl(const
clang::VarDecl&, bool, const char*): Assertion
`getContext().getLangOptions().CPlusPlus && "only C++ supports
non-constant static initializers!"' failed.

A test source and the full error message is attached.

The error occurs only if the first element of "struct foo" is a
pointer and only the second one gets explicitly initialized.

Max
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.c
Type: text/x-csrc
Size: 133 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20090129/31e30df4/attachment.c>
-------------- next part --------------
clang: CGDecl.cpp:93: llvm::GlobalValue* clang::CodeGen::CodeGenFunction::GenerateStaticBlockVarDecl(const clang::VarDecl&, bool, const char*): Assertion `getContext().getLangOptions().CPlusPlus && "only C++ supports non-constant static initializers!"' failed.
0   clang     0x00000000017eed9e
1   clang     0x00000000017ef0d4
2   libc.so.6 0x00007fb12bdc4110
3   libc.so.6 0x00007fb12bdc407b gsignal + 59
4   libc.so.6 0x00007fb12bdc584e abort + 270
5   libc.so.6 0x00007fb12bdbdaf4 __assert_fail + 260
6   clang     0x00000000010b4165 clang::CodeGen::CodeGenFunction::GenerateStaticBlockVarDecl(clang::VarDecl const&, bool, char const*) + 405
7   clang     0x00000000010b4b1b clang::CodeGen::CodeGenFunction::EmitStaticBlockVarDecl(clang::VarDecl const&) + 109
8   clang     0x00000000010b4c67 clang::CodeGen::CodeGenFunction::EmitBlockVarDecl(clang::VarDecl const&) + 55
9   clang     0x00000000010b4d4a clang::CodeGen::CodeGenFunction::EmitDecl(clang::Decl const&) + 142
10  clang     0x00000000010f81fb clang::CodeGen::CodeGenFunction::EmitDeclStmt(clang::DeclStmt const&) + 65
11  clang     0x00000000010f8cd4 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 502
12  clang     0x00000000010f9d03 clang::CodeGen::CodeGenFunction::EmitCompoundStmt(clang::CompoundStmt const&, bool, llvm::Value*, bool) + 253
13  clang     0x00000000010f9f43 clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*) + 101
14  clang     0x00000000010f8b1d clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 63
15  clang     0x00000000010fee86 clang::CodeGen::CodeGenFunction::GenerateCode(clang::FunctionDecl const*, llvm::Function*) + 424
16  clang     0x0000000001097c8e clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::FunctionDecl const*) + 442
17  clang     0x0000000001097d53 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::ValueDecl const*) + 49
18  clang     0x0000000001097f0d clang::CodeGen::CodeGenModule::EmitGlobal(clang::ValueDecl const*) + 377
19  clang     0x000000000109815d clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) + 127
20  clang     0x0000000001094faa
21  clang     0x0000000000bab0f8
22  clang     0x00000000011a38a6 clang::ParseAST(clang::Preprocessor&, clang::ASTConsumer*, clang::TranslationUnit*, bool) + 490
23  clang     0x0000000000be9192
24  clang     0x0000000000be9eb5 main + 1431
25  libc.so.6 0x00007fb12bdb14ca __libc_start_main + 218
26  clang     0x0000000000b9bb3a fmod + 186


More information about the cfe-dev mailing list