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)

Reply via email to