aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHristian Kirtchev <kirtchev@adacore.com>2019-07-08 08:14:27 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2019-07-08 08:14:27 +0000
commit570d5bbc7b7c5f7eb0eb03660a93687a6698ae7e (patch)
tree01098a79c7af2350fd4b1f213ff5cce95ebd8006 /gcc
parent47bcd81fe7f8f9251f0777ae5ee77520b615af26 (diff)
downloadgcc-570d5bbc7b7c5f7eb0eb03660a93687a6698ae7e.zip
gcc-570d5bbc7b7c5f7eb0eb03660a93687a6698ae7e.tar.gz
gcc-570d5bbc7b7c5f7eb0eb03660a93687a6698ae7e.tar.bz2
[Ada] Assertion failure on validity check for Address
This patch corrects the verification of 'Address clauses to avoid processing a clause where the prefix of the attribute is a generic formal object. 2019-07-08 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not register an address clause when its prefix denotes a generic formal object. gcc/testsuite/ * gnat.dg/addr13.adb, gnat.dg/addr13.ads: New testcase. From-SVN: r273218
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/sem_ch13.adb1
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gnat.dg/addr13.adb9
-rw-r--r--gcc/testsuite/gnat.dg/addr13.ads5
5 files changed, 25 insertions, 0 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index cc8978d..b122428 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,11 @@
2019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
+ * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not
+ register an address clause when its prefix denotes a generic
+ formal object.
+
+2019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
+
* bindo-diagnostics.adb (Diagnose_Cycle): Capture the presence
of an Elaborate_All edge before iterating over the edges of the
cycle.
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index 76639cd..cbae9c8 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -5145,6 +5145,7 @@ package body Sem_Ch13 is
-- aspect case properly.
if Is_Object (O_Ent)
+ and then not Is_Generic_Formal (O_Ent)
and then not Is_Generic_Type (Etype (U_Ent))
and then Address_Clause_Overlay_Warnings
then
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 25f6636..169c7a5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2019-07-08 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * gnat.dg/addr13.adb, gnat.dg/addr13.ads: New testcase.
+
2019-07-08 Ed Schonberg <schonberg@adacore.com>
* gnat.dg/entry1.adb, gnat.dg/entry1.ads: New testcase.
diff --git a/gcc/testsuite/gnat.dg/addr13.adb b/gcc/testsuite/gnat.dg/addr13.adb
new file mode 100644
index 0000000..91e44ae
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/addr13.adb
@@ -0,0 +1,9 @@
+-- { dg-do compile }
+
+package body Addr13 is
+ procedure Overlay is
+ Over : Integer with Address => Gen_Obj'Address;
+ begin
+ Over := 123;
+ end Overlay;
+end Addr13;
diff --git a/gcc/testsuite/gnat.dg/addr13.ads b/gcc/testsuite/gnat.dg/addr13.ads
new file mode 100644
index 0000000..f1f1646
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/addr13.ads
@@ -0,0 +1,5 @@
+generic
+ Gen_Obj : in out Integer;
+package Addr13 is
+ procedure Overlay;
+end Addr13;