diff options
-rw-r--r-- | CodeGen/CodeGenTypes.cpp | 3 | ||||
-rw-r--r-- | test/CodeGen/2008-02-08-bitfield-bug.c | 9 |
2 files changed, 11 insertions, 1 deletions
diff --git a/CodeGen/CodeGenTypes.cpp b/CodeGen/CodeGenTypes.cpp index bed01eeb61..d293b4f081 100644 --- a/CodeGen/CodeGenTypes.cpp +++ b/CodeGen/CodeGenTypes.cpp @@ -573,5 +573,6 @@ void RecordOrganizer::placeBitField(const FieldDecl *FD) { CGT.addBitFieldInfo(FD, 0, BitFieldSize); Cursor = (Idx + 1) * TySize + BitFieldSize; } - addPaddingFields(Cursor); + if (Cursor > llvmSize) + addPaddingFields(Cursor); } diff --git a/test/CodeGen/2008-02-08-bitfield-bug.c b/test/CodeGen/2008-02-08-bitfield-bug.c new file mode 100644 index 0000000000..1a9c266fe7 --- /dev/null +++ b/test/CodeGen/2008-02-08-bitfield-bug.c @@ -0,0 +1,9 @@ +// RUN: clang %s -emit-llvm + +struct test { + unsigned a:1; + unsigned b:1; +}; + +struct test *t; + |