diff mbox series

[Ada] Disable anonymous allocator warning for library-level objects

Message ID 20190813083156.GA38520@adacore.com
State New
Headers show
Series [Ada] Disable anonymous allocator warning for library-level objects | expand

Commit Message

Pierre-Marie de Rodat Aug. 13, 2019, 8:31 a.m. UTC
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.

Tested on x86_64-pc-linux-gnu, committed on trunk

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.
diff mbox series

Patch

--- gcc/ada/exp_ch4.adb
+++ 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;

--- /dev/null
new file mode 100644
+++ 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;

--- /dev/null
new file mode 100644
+++ gcc/testsuite/gnat.dg/anon3.ads
@@ -0,0 +1,4 @@ 
+package Anon3 is
+   X : access Integer := new Integer;
+   procedure Dummy;
+end Anon3;