[Ada] Unnesting: handle 'Address references that are calls
authorEd Schonberg <schonberg@adacore.com>
Mon, 16 Jul 2018 14:12:09 +0000 (14:12 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Mon, 16 Jul 2018 14:12:09 +0000 (14:12 +0000)
2018-07-16  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_unst.adb (Visit_Node): Handle 'Address references that are
calls.

From-SVN: r262726

gcc/ada/ChangeLog
gcc/ada/exp_unst.adb

index 13428e9..8b79b00 100644 (file)
@@ -1,5 +1,10 @@
 2018-07-16  Ed Schonberg  <schonberg@adacore.com>
 
+       * exp_unst.adb (Visit_Node): Handle 'Address references that are
+       calls.
+
+2018-07-16  Ed Schonberg  <schonberg@adacore.com>
+
        * exp_unst.adb (Visit_Node): Handle the semantic of Storage_Pool field
        in relevant nodes: Allocate, Free, and return statements.
 
index 464eaa0..ef5ab4a 100644 (file)
@@ -859,7 +859,8 @@ package body Exp_Unst is
                      end;
                   end if;
 
-               --  A 'Access reference is a (potential) call. Other attributes
+               --  A 'Access reference is a (potential) call. So is 'Address,
+               --  in particular on imported subprograms. Other attributes
                --  require special handling.
 
                when N_Attribute_Reference =>
@@ -871,6 +872,7 @@ package body Exp_Unst is
                         when Attribute_Access
                            | Attribute_Unchecked_Access
                            | Attribute_Unrestricted_Access
+                           | Attribute_Address
                         =>
                            if Nkind (Prefix (N)) in N_Has_Entity then
                               Ent := Entity (Prefix (N));