aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/parse/rust-parse.h
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2025-04-29 21:43:41 +0200
committerIain Buclaw <ibuclaw@gdcproject.org>2025-04-29 21:56:30 +0200
commit692b6470706090a09e30232d7eab74151a509243 (patch)
treefb7518b7cf48b41bb4e01eb87800a6bed946087f /gcc/rust/parse/rust-parse.h
parent100efce7ec0fb33f355d67d5544da02e6909afbf (diff)
downloadgcc-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