diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2025-04-29 21:43:41 +0200 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gdcproject.org> | 2025-04-29 21:56:30 +0200 |
commit | 692b6470706090a09e30232d7eab74151a509243 (patch) | |
tree | fb7518b7cf48b41bb4e01eb87800a6bed946087f /gcc/rust/parse/rust-parse.h | |
parent | 100efce7ec0fb33f355d67d5544da02e6909afbf (diff) | |
download | gcc-692b6470706090a09e30232d7eab74151a509243.zip gcc-692b6470706090a09e30232d7eab74151a509243.tar.gz gcc-692b6470706090a09e30232d7eab74151a509243.tar.bz2 |
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.
Diffstat (limited to 'gcc/rust/parse/rust-parse.h')
0 files changed, 0 insertions, 0 deletions