d: Fix associative array literals that don't have alignment holes filled
authorIain Buclaw <ibuclaw@gdcproject.org>
Sat, 18 Jul 2020 15:14:54 +0000 (17:14 +0200)
committerIain Buclaw <ibuclaw@gdcproject.org>
Thu, 30 Jul 2020 21:44:31 +0000 (23:44 +0200)
commit7508a7e958ea06eb311a4a106312634eaf6d40c3
treec3d3f96bb65452d64418a4f759a902275f7141f1
parent873b45d39c14fee6b68032b83ea6bfbc023e3379
d: Fix associative array literals that don't have alignment holes filled

Associative array literal keys with alignment holes are now filled using
memset() prior to usage, with LTR evaluation of side-effects enforced.

gcc/d/ChangeLog:

PR d/96152
* d-codegen.cc (build_array_from_exprs): New function.
* d-tree.h (build_array_from_exprs): Declare.
* expr.cc (ExprVisitor::visit (AssocArrayLiteralExp *)): Use
build_array_from_exprs to generate key and value arrays.

gcc/testsuite/ChangeLog:

PR d/96152
* gdc.dg/pr96152.d: New test.
gcc/d/d-codegen.cc
gcc/d/d-tree.h
gcc/d/expr.cc
gcc/testsuite/gdc.dg/pr96152.d [new file with mode: 0644]