Revision: 125851 Author: dpatel Date: 2007-04-06 20:05:09 -0700 (Fri, 06 Apr 2007)
Log Message: ----------- Fix bit field regression. One llvm field, array of bytes, can be used by two struct bitfields. In this situation while iniitalizing smaller bitfield add empty elements in extra bytes. Modified Paths: -------------- apple-local/branches/llvm/gcc/llvm-convert.cpp Modified: apple-local/branches/llvm/gcc/llvm-convert.cpp =================================================================== --- apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-04-07 02:43:09 UTC (rev 125850) +++ apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-04-07 03:05:09 UTC (rev 125851) @@ -5362,7 +5362,13 @@ OffsetToBitFieldStart = 0; NumBitsToInsert -= NumEltBitsToInsert; } - + + // Pad extra array elements. This may happens when one llvm field + // is used to access two struct fields and llvm field is represented + // as an array of bytes. + for (; i < Elts.size(); ++i) + Elts[i] = ConstantInt::get((cast<ArrayType>(FieldTy))->getElementType(), 0); + return ConstantArray::get(cast<ArrayType>(FieldTy), Elts); } } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits