================ @@ -376,33 +377,41 @@ void CGRecordLowering::lowerUnion(bool isNoUniqueAddress) { } void CGRecordLowering::accumulateFields() { - for (RecordDecl::field_iterator Field = D->field_begin(), - FieldEnd = D->field_end(); - Field != FieldEnd;) { + RecordDecl::field_iterator FieldEnd = D->field_end(); + RecordDecl::field_iterator BitField = FieldEnd; + for (RecordDecl::field_iterator Field = D->field_begin(); Field != FieldEnd; + ++Field) { if (Field->isBitField()) { - RecordDecl::field_iterator Start = Field; - // Iterate to gather the list of bitfields. - for (++Field; Field != FieldEnd && Field->isBitField(); ++Field); - accumulateBitFields(Start, Field); + if (BitField == FieldEnd) + // Start gathering bitfields + BitField = Field; } else if (!Field->isZeroSize(Context)) { // Use base subobject layout for the potentially-overlapping field, // as it is done in RecordLayoutBuilder + CharUnits Offset = bitsToCharUnits(getFieldBitOffset(*Field)); ---------------- urnathan wrote:
ah, thanks -- I should have checked harder. Simple enough to undo that bit. https://github.com/llvm/llvm-project/pull/65742 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits