================ @@ -1759,20 +1759,29 @@ void CodeGenFunction::emitZeroOrPatternForAutoVarInit(QualType type, const VarDecl &D, Address Loc) { auto trivialAutoVarInit = getContext().getLangOpts().getTrivialAutoVarInit(); + auto trivialAutoVarInitSizeBound = + getContext().getLangOpts().TrivialAutoVarInitSizeBound; CharUnits Size = getContext().getTypeSizeInChars(type); bool isVolatile = type.isVolatileQualified(); if (!Size.isZero()) { + auto allocSize = CGM.getDataLayout().getTypeAllocSize(Loc.getElementType()); ---------------- vitalybuka wrote:
I'd expect that it's kind of `bail out` measure which should not be consider as a contract by a end-user. So confusing should not be a concern. Also how ``` struct S { long a; long b; char c; } var; ``` is better then: ``` long a; long b; char c; ``` My impression was that your concern is buffers of hundreds of bytes, then maybe better to target just them? If it 's `24 vs 16` maybe it should not use auto init at all? https://github.com/llvm/llvm-project/pull/74777 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits