[LLVMbugs] [Bug 21300] New: CodeGen: Packed struct with int field and int bitfield crashes

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Oct 16 11:49:26 PDT 2014


http://llvm.org/bugs/show_bug.cgi?id=21300

            Bug ID: 21300
           Summary: CodeGen: Packed struct with int field and int bitfield
                    crashes
           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

$ cat t.cpp
#pragma pack(1)
struct A {
  int : 1;
  int x;
} a = {};

$ ~/llvm/Debug+Asserts/bin/clang -cc1 -x c++ -triple i686-pc-linux t.cpp
-fms-extensions -std=c++1y -emit-llvm-only
clang: ~/llvm/src/tools/clang/lib/CodeGen/CGExprConstant.cpp:342: void
{anonymous}::ConstStructBuilder::ConvertStructToPacked(): Assertion
`ElementOffsetInChars == NextFieldOffsetInChars && "Packing the struct changed
its size!"' failed.
#0 0x21cf2ea llvm::sys::PrintStackTrace(_IO_FILE*)
~/llvm/src/lib/Support/Unix/Signals.inc:423:0
#1 0x21cf585 PrintStackTraceSignalHandler(void*)
~/llvm/src/lib/Support/Unix/Signals.inc:481:0
#2 0x21ce11b SignalHandler(int) ~/llvm/src/lib/Support/Unix/Signals.inc:198:0
#3 0x7fd6d5cba340 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x10340)
#4 0x7fd6d50f7bb9 gsignal
/build/buildd/eglibc-2.19/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:56:0
#5 0x7fd6d50fafc8 abort /build/buildd/eglibc-2.19/stdlib/abort.c:91:0
#6 0x7fd6d50f0a76 __assert_fail_base
/build/buildd/eglibc-2.19/assert/assert.c:92:0
#7 0x7fd6d50f0b22 (/lib/x86_64-linux-gnu/libc.so.6+0x2fb22)
#8 0x272ee86 (anonymous namespace)::ConstStructBuilder::ConvertStructToPacked()
~/llvm/src/tools/clang/lib/CodeGen/CGExprConstant.cpp:344:0
#9 0x272f9fa (anonymous
namespace)::ConstStructBuilder::Finalize(clang::QualType)
~/llvm/src/tools/clang/lib/CodeGen/CGExprConstant.cpp:500:0
#10 0x272fcd3 (anonymous
namespace)::ConstStructBuilder::BuildStruct(clang::CodeGen::CodeGenModule&,
clang::CodeGen::CodeGenFunction*, clang::InitListExpr*)
~/llvm/src/tools/clang/lib/CodeGen/CGExprConstant.cpp:535:0
#11 0x27308a4 (anonymous
namespace)::ConstExprEmitter::EmitRecordInitialization(clang::InitListExpr*)
~/llvm/src/tools/clang/lib/CodeGen/CGExprConstant.cpp:779:0
#12 0x2730962 (anonymous
namespace)::ConstExprEmitter::VisitInitListExpr(clang::InitListExpr*)
~/llvm/src/tools/clang/lib/CodeGen/CGExprConstant.cpp:790:0
#13 0x273557b clang::StmtVisitorBase<clang::make_ptr, (anonymous
namespace)::ConstExprEmitter, llvm::Constant*>::Visit(clang::Stmt*)
~/llvm/Debug+Asserts/tools/clang/include/clang/AST/StmtNodes.inc:493:0
#14 0x27319da clang::CodeGen::CodeGenModule::EmitConstantInit(clang::VarDecl
const&, clang::CodeGen::CodeGenFunction*)
~/llvm/src/tools/clang/lib/CodeGen/CGExprConstant.cpp:1013:0
#15 0x2784444
clang::CodeGen::CodeGenModule::EmitGlobalVarDefinition(clang::VarDecl const*)
~/llvm/src/tools/clang/lib/CodeGen/CodeGenModule.cpp:1856:0
#16 0x2782e83
clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl,
llvm::GlobalValue*) ~/llvm/src/tools/clang/lib/CodeGen/CodeGenModule.cpp:1434:0
#17 0x2782748 clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl)
~/llvm/src/tools/clang/lib/CodeGen/CodeGenModule.cpp:1290:0
#18 0x2789520 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*)
~/llvm/src/tools/clang/lib/CodeGen/CodeGenModule.cpp:3041:0
#19 0x27024f9 (anonymous
namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef)
~/llvm/src/tools/clang/lib/CodeGen/ModuleBuilder.cpp:113:0
#20 0x26ebf1c clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef)
~/llvm/src/tools/clang/lib/CodeGen/CodeGenAction.cpp:106:0
#21 0x30a8ff2 clang::ParseAST(clang::Sema&, bool, bool)
~/llvm/src/tools/clang/lib/Parse/ParseAST.cpp:143:0
#22 0x23badcc clang::ASTFrontendAction::ExecuteAction()
~/llvm/src/tools/clang/lib/Frontend/FrontendAction.cpp:523:0
#23 0x26ee6e5 clang::CodeGenAction::ExecuteAction()
~/llvm/src/tools/clang/lib/CodeGen/CodeGenAction.cpp:718:0
#24 0x23ba8a7 clang::FrontendAction::Execute()
~/llvm/src/tools/clang/lib/Frontend/FrontendAction.cpp:427:0
#25 0x2384164 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
~/llvm/src/tools/clang/lib/Frontend/CompilerInstance.cpp:812:0
#26 0x24c5a11 clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
~/llvm/src/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:222:0
#27 0x1116cf8 cc1_main(llvm::ArrayRef<char const*>, char const*, void*)
~/llvm/src/tools/clang/tools/driver/cc1_main.cpp:110:0
#28 0x110fc64 ExecuteCC1Tool(llvm::ArrayRef<char const*>, llvm::StringRef)
~/llvm/src/tools/clang/tools/driver/driver.cpp:368:0
#29 0x1110244 main ~/llvm/src/tools/clang/tools/driver/driver.cpp:414:0
#30 0x7fd6d50e2ec5 __libc_start_main
/build/buildd/eglibc-2.19/csu/libc-start.c:321:0
#31 0x110ceb9 _start (~/llvm/Debug+Asserts/bin/clang-3.5+0x110ceb9)
Stack dump:
0.      Program arguments: ~/llvm/Debug+Asserts/bin/clang -cc1 -x c++ -triple
i686-pc-linux different.cpp -fms-extensions -std=c++1y -emit-llvm-only 
1.      <eof> parser at end of file
2.      different.cpp:2:8: LLVM IR generation of declaration 'ClassName13'
3.      different.cpp:5:3: Generating code for declaration 'a'
zsh: abort (core dumped)  ~/llvm/Debug+Asserts/bin/clang -cc1 -x c++

-- 
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/20141016/0c94f73d/attachment.html>


More information about the llvm-bugs mailing list