diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2021-07-03 00:13:29 +0200 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gdcproject.org> | 2021-07-03 00:43:57 +0200 |
commit | c77230856eac2d28eb7bf10985846885c3c8727b (patch) | |
tree | d77253582b8c4ac0a89be0a27b423ce53150e283 /include | |
parent | 6feb628a706e86eb3f303aff388c74bdb29e7381 (diff) | |
download | gcc-c77230856eac2d28eb7bf10985846885c3c8727b.zip gcc-c77230856eac2d28eb7bf10985846885c3c8727b.tar.gz gcc-c77230856eac2d28eb7bf10985846885c3c8727b.tar.bz2 |
d: RHS value lost when a target_expr modifies LHS in a cond_expr
To prevent the RHS of an assignment modifying the LHS before the
assignment proper, a target_expr is forced so that function calls that
return with slot optimization modify the temporary instead. This did
not work for conditional expressions however, to give one example. So
now the RHS is always forced to a temporary.
PR d/101282
gcc/d/ChangeLog:
* d-codegen.cc (build_assign): Force target_expr on RHS for non-POD
assignment expressions.
gcc/testsuite/ChangeLog:
* gdc.dg/torture/pr101282.d: New test.
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions