aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJustin Squirek <squirek@adacore.com>2019-08-13 08:06:50 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2019-08-13 08:06:50 +0000
commit943c82d7b9bc15161ac344953b2deb0a4121b279 (patch)
treef7ff9f56183bae7ac7082c37f833291f644f1faa /gcc
parent114042b8861a33ec7227c5ac2967058ee60c248f (diff)
downloadgcc-943c82d7b9bc15161ac344953b2deb0a4121b279.zip
gcc-943c82d7b9bc15161ac344953b2deb0a4121b279.tar.gz
gcc-943c82d7b9bc15161ac344953b2deb0a4121b279.tar.bz2
[Ada] Disable anonymous allocator warning for library-level objects
This patch modifies the behavior of anonymous allocator warnings so that they no longer get triggered in the case of an object declaration at library-level. 2019-08-13 Justin Squirek <squirek@adacore.com> gcc/ada/ * exp_ch4.adb (Expand_N_Allocator): Add condition to detect library-level object declarations gcc/testsuite/ * gnat.dg/anon3.adb, gnat.dg/anon3.ads: New testcase. From-SVN: r274338
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/exp_ch4.adb5
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gnat.dg/anon3.adb6
-rw-r--r--gcc/testsuite/gnat.dg/anon3.ads4
5 files changed, 23 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index f4ad36d..5a9a9cc 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-13 Justin Squirek <squirek@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Allocator): Add condition to detect
+ library-level object declarations
+
2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
* doc/gnat_ugn/building_executable_programs_with_gnat.rst
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index 6f2fe32..4404c5d 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -4421,10 +4421,13 @@ package body Exp_Ch4 is
begin
-- Warn on the presence of an allocator of an anonymous access type when
- -- enabled.
+ -- enabled except when its an object declaration at library level.
if Warn_On_Anonymous_Allocators
and then Ekind (PtrT) = E_Anonymous_Access_Type
+ and then not (Is_Library_Level_Entity (PtrT)
+ and then Nkind (Associated_Node_For_Itype (PtrT)) =
+ N_Object_Declaration)
then
Error_Msg_N ("?use of an anonymous access type allocator", N);
end if;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 206d39d..8ec5ec0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2019-08-13 Justin Squirek <squirek@adacore.com>
+
+ * gnat.dg/anon3.adb, gnat.dg/anon3.ads: New testcase.
+
2019-08-13 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/generic_inst8.adb, gnat.dg/generic_inst8.ads,
diff --git a/gcc/testsuite/gnat.dg/anon3.adb b/gcc/testsuite/gnat.dg/anon3.adb
new file mode 100644
index 0000000..8628633
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/anon3.adb
@@ -0,0 +1,6 @@
+-- { dg-do compile }
+-- { dg-options "-gnatwa" }
+
+package body Anon3 is
+ procedure Dummy is null;
+end Anon3;
diff --git a/gcc/testsuite/gnat.dg/anon3.ads b/gcc/testsuite/gnat.dg/anon3.ads
new file mode 100644
index 0000000..39978c2
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/anon3.ads
@@ -0,0 +1,4 @@
+package Anon3 is
+ X : access Integer := new Integer;
+ procedure Dummy;
+end Anon3;