Author: dpatel Date: Thu Jan 24 18:43:54 2008 New Revision: 46338 URL: http://llvm.org/viewvc/llvm-project?rev=46338&view=rev Log: Fix 2008-01-24-StructAlignAndBitFields.c test case. Bit-field type does not influence struct alignment.
Modified: llvm-gcc-4.0/trunk/gcc/llvm-types.cpp Modified: llvm-gcc-4.0/trunk/gcc/llvm-types.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/llvm-types.cpp?rev=46338&r1=46337&r2=46338&view=diff ============================================================================== --- llvm-gcc-4.0/trunk/gcc/llvm-types.cpp (original) +++ llvm-gcc-4.0/trunk/gcc/llvm-types.cpp Thu Jan 24 18:43:54 2008 @@ -1529,9 +1529,14 @@ // Handle bit-fields specially. if (DECL_BIT_FIELD_TYPE(Field)) { - DecodeStructBitField(Field, Info); - return true; - } + // Bit-field type does not influence structure alignment. + // For example, struct A { char a; short b; int c:25; char d; } does not + // have 4 byte alignment. To enforce this rule, always use packed struct. + if (!Info.isPacked()) + return false; + DecodeStructBitField(Field, Info); + return true; + } Info.allFieldsAreNotBitFields(); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits