[LLVMbugs] [Bug 18169] New: [-cxx-abi microsoft] Layout calculation leads to assertion failure
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Sat Dec 7 01:42:22 PST 2013
http://llvm.org/bugs/show_bug.cgi?id=18169
Bug ID: 18169
Summary: [-cxx-abi microsoft] Layout calculation leads to
assertion failure
Product: clang
Version: unspecified
Hardware: PC
OS: All
Status: NEW
Severity: normal
Priority: P
Component: LLVM Codegen
Assignee: unassignedclangbugs at nondot.org
Reporter: david.majnemer at gmail.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
consider:
#if defined(__clang__) || defined(__GNUC__)
typedef __SIZE_TYPE__ size_t;
#endif
static char buffer[419430400];
inline void *operator new(size_t, void *pv) {}
struct ClassName0 {};
struct ClassName1 : public ClassName0 {};
struct ClassName2 : public virtual ClassName0 {};
struct ClassName3 : public ClassName1, public virtual ClassName2 {
char : 9;
bool ClassName3FieldName2;
};
static void test_layout(const char *class_name, size_t size_of_class,
size_t align_of_class) {}
template <typename Class>
static void init_mem() {
new (buffer) Class;
}
#define test(Class) \
init_mem<Class>(), test_layout(#Class, sizeof(Class), __alignof(Class))
int main() { test(ClassName3); }
leads to:
different.cpp:34:2: warning: size of anonymous bit-field (9 bits) exceeds size
of its type; value will be truncated to 8 bits
char : 9;
^
clang: ~/llvm/src/tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp:348: bool
{anonymous}::CGRecordLayoutBuilder::LayoutBitfields(const
clang::ASTRecordLayout&, unsigned int&, clang::RecordDecl::field_iterator&,
clang::RecordDecl::field_iterator): Assertion `EndOffset >= (FirstFieldOffset +
TotalBits) && "End offset is not past the end of the known storage bits."'
failed.
0 clang 0x0000000001e7e937 llvm::sys::PrintStackTrace(_IO_FILE*) +
38
1 clang 0x0000000001e7ebbe
2 clang 0x0000000001e7e602
3 libpthread.so.0 0x00007f39b5f08cb0
4 libc.so.6 0x00007f39b535d425 gsignal + 53
5 libc.so.6 0x00007f39b5360b8b abort + 379
6 libc.so.6 0x00007f39b53560ee
7 libc.so.6 0x00007f39b5356192
8 clang 0x0000000001efc34f
9 clang 0x0000000001efdc6a
10 clang 0x0000000001efbbe2
11 clang 0x0000000001efe630
clang::CodeGen::CodeGenTypes::ComputeRecordLayout(clang::RecordDecl const*,
llvm::StructType*) + 98
12 clang 0x0000000001f8fa5d
clang::CodeGen::CodeGenTypes::ConvertRecordDeclType(clang::RecordDecl const*) +
589
13 clang 0x0000000001f8e850
clang::CodeGen::CodeGenTypes::ConvertType(clang::QualType) + 176
14 clang 0x0000000001f8e022
clang::CodeGen::CodeGenTypes::ConvertTypeForMem(clang::QualType) + 36
15 clang 0x0000000001f208bf
clang::CodeGen::CodeGenFunction::ConvertTypeForMem(clang::QualType) + 47
16 clang 0x0000000002045af5
clang::CodeGen::CodeGenFunction::EmitCXXNewExpr(clang::CXXNewExpr const*) +
1913
17 clang 0x000000000204af8a
18 clang 0x000000000205ad69
19 clang 0x0000000002049fcf
20 clang 0x0000000002059c77
clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) + 159
21 clang 0x0000000002013635
clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*,
clang::CodeGen::AggValueSlot, bool) + 101
22 clang 0x0000000002013585
clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) + 127
23 clang 0x0000000001f07712
clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 400
24 clang 0x0000000001f07db9
clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt
const&, bool, clang::CodeGen::AggValueSlot) + 109
25 clang 0x0000000001f2318f
clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::CodeGen::FunctionArgList&,
clang::Stmt const*) + 113
26 clang 0x0000000001f238c3
clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl,
llvm::Function*, clang::CodeGen::CGFunctionInfo const&) + 1347
27 clang 0x0000000001f357df
clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl)
+ 1051
28 clang 0x0000000001f32c7d
clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl) + 395
29 clang 0x0000000001f316e9
clang::CodeGen::CodeGenModule::EmitDeferred() + 341
30 clang 0x0000000001f2e6c9 clang::CodeGen::CodeGenModule::Release()
+ 25
31 clang 0x0000000001eb88bd
32 clang 0x0000000001eb7527
33 clang 0x0000000002292140 clang::ParseAST(clang::Sema&, bool, bool)
+ 776
34 clang 0x0000000002189c9b clang::ASTFrontendAction::ExecuteAction()
+ 321
35 clang 0x0000000001eb643c clang::CodeGenAction::ExecuteAction() +
1414
36 clang 0x00000000021897da clang::FrontendAction::Execute() + 200
37 clang 0x0000000002161e6c
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 720
38 clang 0x0000000001e85116
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1018
39 clang 0x0000000000d0f283 cc1_main(char const**, char const**, char
const*, void*) + 717
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20131207/51c6c174/attachment.html>
More information about the llvm-bugs
mailing list