From ec51171319f90ddec80fab09cfc08fcb5ce0171a Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Thu, 8 Nov 2007 00:32:12 +0000 Subject: Add assert for the case that is not handled. struct { char a; short b:2; }; llvm-svn: 43859 --- clang/CodeGen/CodeGenTypes.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'clang/CodeGen/CodeGenTypes.cpp') diff --git a/clang/CodeGen/CodeGenTypes.cpp b/clang/CodeGen/CodeGenTypes.cpp index 30ef78f333a..5f040bbb802 100644 --- a/clang/CodeGen/CodeGenTypes.cpp +++ b/clang/CodeGen/CodeGenTypes.cpp @@ -399,7 +399,12 @@ void RecordOrganizer::layoutStructFields(const ASTRecordLayout &RL) { assert (isBitField && "Invalid BitField size expression"); uint64_t BitFieldSize = FieldSize.getZExtValue(); if (ExtraBits == 0) { + const llvm::Type *PrevTy = LLVMFields.back(); const llvm::Type *Ty = CGT.ConvertType(FD->getType()); + assert (CGT.getTargetData().getTypeSizeInBits(PrevTy) >= + CGT.getTargetData().getTypeSizeInBits(Ty) + && "FIXME Unable to handle bit field. Reuse last field"); + // Calculate extra bits available in this bitfield. ExtraBits = CGT.getTargetData().getTypeSizeInBits(Ty) - BitFieldSize; addLLVMField(Ty, BitFieldSize, FD, 0, ExtraBits); -- cgit v1.2.3