diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2020-02-15 16:48:15 +0100 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2020-06-08 03:51:01 -0400 |
commit | 8214938ab2e0775ff70b344a8fbc0a43bda0b0c5 (patch) | |
tree | edbde544c0449a7632b45c3872808d8b93c9ad1d | |
parent | 591bdee0fa1087daeab3c0f901d5139c6776469d (diff) | |
download | gcc-8214938ab2e0775ff70b344a8fbc0a43bda0b0c5.zip gcc-8214938ab2e0775ff70b344a8fbc0a43bda0b0c5.tar.gz gcc-8214938ab2e0775ff70b344a8fbc0a43bda0b0c5.tar.bz2 |
[Ada] Do not warn on partial access to atomic object with address clause
2020-06-08 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* sem_res.adb (Resolve_Indexed_Component): Do not give a warning
for a nonatomic component of an atomic array which is subject to
an address clause in Ada 2020 mode.
(Resolve_Selected_Component): Likewise for an atomic record.
-rw-r--r-- | gcc/ada/sem_res.adb | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index 2cbb35f..303f4db 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -9034,10 +9034,10 @@ package body Sem_Res is Eval_Indexed_Component (N); end if; - -- If the array type is atomic, and the component is not atomic, then - -- this is worth a warning, since we have a situation where the access - -- to the component may cause extra read/writes of the atomic array - -- object, or partial word accesses, which could be unexpected. + -- If the array type is atomic and the component is not, then this is + -- worth a warning before Ada 2020, since we have a situation where the + -- access to the component may cause extra read/writes of the atomic + -- object, or partial word accesses, both of which may be unexpected. if Nkind (N) = N_Indexed_Component and then Is_Atomic_Ref_With_Address (N) @@ -9046,6 +9046,7 @@ package body Sem_Res is and then Has_Atomic_Components (Entity (Prefix (N))))) and then not Is_Atomic (Component_Type (Array_Type)) + and then Ada_Version < Ada_2020 then Error_Msg_N ("??access to non-atomic component of atomic array", Prefix (N)); @@ -10727,15 +10728,16 @@ package body Sem_Res is -- Note: No Eval processing is required, because the prefix is of a -- record type, or protected type, and neither can possibly be static. - -- If the record type is atomic, and the component is non-atomic, then - -- this is worth a warning, since we have a situation where the access - -- to the component may cause extra read/writes of the atomic array + -- If the record type is atomic and the component is not, then this is + -- worth a warning before Ada 2020, since we have a situation where the + -- access to the component may cause extra read/writes of the atomic -- object, or partial word accesses, both of which may be unexpected. if Nkind (N) = N_Selected_Component and then Is_Atomic_Ref_With_Address (N) and then not Is_Atomic (Entity (S)) and then not Is_Atomic (Etype (Entity (S))) + and then Ada_Version < Ada_2020 then Error_Msg_N ("??access to non-atomic component of atomic record", |