PR94600: fix volatile access to the whole of a compound object.
authorHans-Peter Nilsson <hp@axis.com>
Sun, 5 Jul 2020 18:50:52 +0000 (20:50 +0200)
committerHans-Peter Nilsson <hp@axis.com>
Mon, 13 Jul 2020 06:08:39 +0000 (08:08 +0200)
commita4aca1edaf37d43b2b7e9111825837a7a317b1b0
treecc00c01e5050a71797365b84d0b943b1baec2f40
parent56d78c58c233a358c780571ad6fecbabdcff2407
PR94600: fix volatile access to the whole of a compound object.

The store to the whole of each volatile object was picked apart
like there had been an individual assignment to each of the
fields.  Reads were added as part of that; see PR for details.
The reads from volatile memory were a clear bug; individual
stores questionable.  A separate patch clarifies the docs.

gcc:

2020-07-09  Richard Biener  <rguenther@suse.de>

PR middle-end/94600
* expr.c (expand_constructor): Make a temporary also if we're
storing to volatile memory.

gcc/testsuite:

2020-07-09  Hans-Peter Nilsson  <hp@axis.com>

PR middle-end/94600
* gcc.dg/pr94600-1.c, gcc.dg/pr94600-2.c, gcc.dg/pr94600-3.c,
gcc.dg/pr94600-4.c, gcc.dg/pr94600-5.c, gcc.dg/pr94600-6.c,
gcc.dg/pr94600-7.c, gcc.dg/pr94600-8.c: New tests.
gcc/expr.c
gcc/testsuite/gcc.dg/pr94600-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr94600-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr94600-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr94600-4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr94600-5.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr94600-6.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr94600-7.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr94600-8.c [new file with mode: 0644]