aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2019-12-13 09:05:23 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2019-12-13 09:05:23 +0000
commite1e1e53a4861f5addee43088de14dadf47892f23 (patch)
tree0d879d83b4462a31dcfa125bba697dc1109fd5dd /gcc/ada
parenta35c1b077e32e4b552dd1d0f2385a3885fcabf4b (diff)
downloadgcc-e1e1e53a4861f5addee43088de14dadf47892f23.zip
gcc-e1e1e53a4861f5addee43088de14dadf47892f23.tar.gz
gcc-e1e1e53a4861f5addee43088de14dadf47892f23.tar.bz2
[Ada] Better error message for aliased formal and atomic actual
2019-12-13 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_res.adb (Resolve_Actuals): Give canonical error for illegal case of atomic/volatile parameter also if the formal is aliased. From-SVN: r279364
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/sem_res.adb2
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index a1f971a..7282db4 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,11 @@
2019-12-13 Eric Botcazou <ebotcazou@adacore.com>
+ * sem_res.adb (Resolve_Actuals): Give canonical error for
+ illegal case of atomic/volatile parameter also if the formal is
+ aliased.
+
+2019-12-13 Eric Botcazou <ebotcazou@adacore.com>
+
* sem_util.ads (Is_Atomic_Object): Mention relevant RM clauses.
* sem_util.adb (Is_Atomic_Object): For an indexed component,
only look at the Has_Atomic_Components aspect of the prefix and
diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb
index 54d4728..1c5ae36 100644
--- a/gcc/ada/sem_res.adb
+++ b/gcc/ada/sem_res.adb
@@ -4717,7 +4717,7 @@ package body Sem_Res is
-- Check bad case of atomic/volatile argument (RM C.6(12))
- if Is_By_Reference_Type (Etype (F))
+ if (Is_By_Reference_Type (Etype (F)) or else Is_Aliased (F))
and then Comes_From_Source (N)
then
if Is_Atomic_Object (A)