https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103044

--- Comment #3 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Iain Buclaw <ibuc...@gcc.gnu.org>:

https://gcc.gnu.org/g:692b6470706090a09e30232d7eab74151a509243

commit r16-289-g692b6470706090a09e30232d7eab74151a509243
Author: Iain Buclaw <ibuc...@gdcproject.org>
Date:   Tue Apr 29 21:43:41 2025 +0200

    d: Use __builtin_clear_padding for zeroing alignment holes after set

    In an earlier change, a wrapper function was added to set
    CONSTRUCTOR_ZERO_PADDING_BITS on all CONSTRUCTOR nodes. This removes all
    the old generated calls to built-in memset and memcpy as zero padding is
    now taken care of by the middle-end.

    The remaining constructors that weren't getting zero padded was
    ARRAY_TYPEs, so now `__builtin_clear_padding' is used to fill in all
    alignment holes in constructed array literals where required.

            PR d/103044

    gcc/d/ChangeLog:

            * d-tree.h (build_clear_padding_call): New prototype.
            * d-codegen.cc (build_clear_padding_call): New function.
            (build_memset_call): Remove generated call to __builtin_memcpy.
            (build_address): Replace generated call to __builtin_memset with
            __builtin_clear_padding.
            (build_array_from_exprs): Likewise.
            * expr.cc (ExprVisitor::visit (AssignExp *)): Remove generated call
to
            __builtin_memset.
            (ExprVisitor::visit (ArrayLiteralExp *)): Likewise.  Insert call to
            __builtin_clear_padding after copying array into GC memory.
            (ExprVisitor::visit (StructLiteralExp *)): Remove generated call to
            __builtin_memset.
            * toir.cc (IRVisitor::visit (ReturnStatement *)): Likewise.
  • [Bug d/103044] d: Use __builtin... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to