diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2024-08-22 21:18:15 +0200 |
---|---|---|
committer | Marc Poulhiès <dkm@gcc.gnu.org> | 2024-09-03 10:16:49 +0200 |
commit | 0a862c5af5c603baab8715bbcca6890f77cc59e2 (patch) | |
tree | 951fc314e6b144149f08764aa6263219717199fa /gcc/fold-const.cc | |
parent | d8d191469e1e08e7b8530874cbb0f2781dc2e14d (diff) | |
download | gcc-0a862c5af5c603baab8715bbcca6890f77cc59e2.zip gcc-0a862c5af5c603baab8715bbcca6890f77cc59e2.tar.gz gcc-0a862c5af5c603baab8715bbcca6890f77cc59e2.tar.bz2 |
ada: Fix internal error with Atomic Volatile_Full_Access object
The initial implementation of the GNAT aspect/pragma Volatile_Full_Access
made it incompatible with Atomic, because it was not decided whether the
read-modify-write sequences generated by Volatile_Full_Access would need
to be implemented atomically when Atomic was also specified, which would
have required a compare-and-swap primitive from the target architecture.
But Ada 2022 introduced Full_Access_Only and retrofitted it into Atomic
in the process, answering the above question by the negative, so the
incompatibility between Volatile_Full_Access and Atomic was lifted in
Ada 2012 as well, unfortunately without adjusting the implementation.
gcc/ada/
* gcc-interface/trans.cc (get_atomic_access): Deal specifically with
nodes that are both Atomic and Volatile_Full_Access in Ada 2012.
Diffstat (limited to 'gcc/fold-const.cc')
0 files changed, 0 insertions, 0 deletions