[Ada] Unnesting: exclude selected components whose prefix carry no type
authorEd Schonberg <schonberg@adacore.com>
Tue, 29 May 2018 09:41:45 +0000 (09:41 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Tue, 29 May 2018 09:41:45 +0000 (09:41 +0000)
2018-05-29  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_unst.adb (Visit_Node): Exclude selected components whose prefix
carry no type. Such selected components appear in unit names that are
child units, both in the specification and possibly in an end label for
the unit, and they do not contain any relevant uplevel references.

From-SVN: r260879

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

index 3eb0a41f7996878893db40ec20da8cefa55e21d6..4eb12c5fa8756e610a2206faf2f6bddf9bb5d845 100644 (file)
@@ -1,3 +1,10 @@
+2018-05-29  Ed Schonberg  <schonberg@adacore.com>
+
+       * exp_unst.adb (Visit_Node): Exclude selected components whose prefix
+       carry no type. Such selected components appear in unit names that are
+       child units, both in the specification and possibly in an end label for
+       the unit, and they do not contain any relevant uplevel references.
+
 2018-05-29  Arnaud Charlet  <charlet@adacore.com>
 
        * libgnat/a-calend.ads, libgnat/a-calend.adb (Epoch_Offset): Make it a
index 03f316a53ee9531100db64f8f4f3aae095332dde..b1383f9546c221022c21ce9af65068dbe27e7ff3 100644 (file)
@@ -753,7 +753,13 @@ package body Exp_Unst is
             --  simplify the processing here by examining all components
             --  of the record.
 
-            elsif Nkind (N) = N_Selected_Component then
+            --  Selected components appear as unit names and end labels for
+            --  child units. The prefixes of these nodes denote parent
+            --  units and carry no type information so they are skipped.
+
+            elsif Nkind (N) = N_Selected_Component
+              and then Present (Etype (Prefix (N)))
+            then
                declare
                   DT : Boolean := False;
                begin