================ @@ -1745,13 +1748,48 @@ void AggExprEmitter::VisitCXXParenListOrInitListExpr( // Default-initialize to null. EmitNullInitializationToLValue(FieldLoc); } + if (ZeroInitPadding) { + CharUnits TotalSize = + Dest.getPreferredSize(CGF.getContext(), DestLV.getType()); + CharUnits FieldSize = + CGF.getContext().getTypeSizeInChars(FieldLoc.getType()); + if (FieldSize < TotalSize) { + CharUnits LeftSize = TotalSize - FieldSize; + llvm::Constant *LeftSizeVal = + CGF.Builder.getInt64(LeftSize.getQuantity()); + Address BaseLoc = Dest.getAddress().withElementType(CGF.Int8Ty); + Address LeftLoc = + CGF.Builder.CreateConstGEP(BaseLoc, LeftSize.getQuantity()); + CGF.Builder.CreateMemSet(LeftLoc, CGF.Builder.getInt8(0), LeftSizeVal, ---------------- efriedma-quic wrote:
If we don't have an initializer, instead of explicitly init'ing the padding, we can just `EmitNullInitializationToLValue(DestLV)`. https://github.com/llvm/llvm-project/pull/97121 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits