https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117002
--- Comment #8 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-14 branch has been updated by Iain Buclaw <ibuc...@gcc.gnu.org>: https://gcc.gnu.org/g:a6a2da499ab8b6b9e52cec5bc32bbd48371bb6ba commit r14-11489-ga6a2da499ab8b6b9e52cec5bc32bbd48371bb6ba Author: Iain Buclaw <ibuc...@gdcproject.org> Date: Sat Mar 29 23:16:25 2025 +0100 d: Fix error with -Warray-bounds and -O2 [PR117002] The record layout of class types in D don't get any tail padding, so it is possible for the `classInstanceSize' to not be a multiple of the `classInstanceAlignment'. Rather than setting the instance alignment on the underlying RECORD_TYPE, instead give the type an alignment of 1, which will mark it as TYPE_PACKED. The value of `classInstanceAlignment' is instead applied to the DECL_ALIGN of both the static `init' symbol, and the stack allocated variable used when generating `new' for a `scope' class. PR d/117002 gcc/d/ChangeLog: * decl.cc (aggregate_initializer_decl): Set explicit decl alignment of class instance. * expr.cc (ExprVisitor::visit (NewExp *)): Likewise. * types.cc (TypeVisitor::visit (TypeClass *)): Mark the record type of classes as packed. gcc/testsuite/ChangeLog: * gdc.dg/torture/pr117002.d: New test. (cherry picked from commit 9fadadbbbc2b5352e5e70e0e1a9be9b447176913)