[Ada] Unnesting: look for specification of main unit
authorEd Schonberg <schonberg@adacore.com>
Wed, 30 May 2018 08:56:49 +0000 (08:56 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Wed, 30 May 2018 08:56:49 +0000 (08:56 +0000)
2018-05-30  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_unst.adb: Search specification of main unit as well, for
unnesting.

From-SVN: r260928

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

index b9830e47d04afe0fcf3716224d01da8679ada974..729caee2f59eed75c79623f6ac79b019a64264b7 100644 (file)
@@ -1,3 +1,8 @@
+2018-05-30  Ed Schonberg  <schonberg@adacore.com>
+
+       * exp_unst.adb: Search specification of main unit as well, for
+       unnesting.
+
 2018-05-30  Ed Schonberg  <schonberg@adacore.com>
 
        * exp_ch7.adb (Check_Unnesting_Elaboration_Code): The statement part of
index c65f5ca3861b2de32a6d31a55b1b1eaef6e4a910..98f6dffc9f21ff2d52009a879447b618cddded25 100644 (file)
@@ -2037,6 +2037,17 @@ package body Exp_Unst is
          return;
       end if;
 
+      --  A specification will contain bodies if it contains instantiations
+      --  so examine package or subprogram declaration of the main unit,
+      --  when it is present.
+
+      if Nkind (Unit (N)) = N_Package_Body
+          or else (Nkind (Unit (N)) = N_Subprogram_Body
+                     and then not Acts_As_Spec (N))
+      then
+         Do_Search (Library_Unit (N));
+      end if;
+
       Do_Search (N);
    end Unnest_Subprograms;