This patch corrects the verification of 'Address clauses to avoid
processing a clause where the prefix of the attribute is a generic
formal object.
Tested on x86_64-pc-linux-gnu, committed on trunk
2019-07-08 Hristian Kirtchev <kirtc...@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.
--- gcc/ada/sem_ch13.adb
+++ 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
--- /dev/null
new file mode 100644
+++ 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;
--- /dev/null
new file mode 100644
+++ gcc/testsuite/gnat.dg/addr13.ads
@@ -0,0 +1,5 @@
+generic
+ Gen_Obj : in out Integer;
+package Addr13 is
+ procedure Overlay;
+end Addr13;