[Ada] Fix problematic placement of freeze node after instantiation
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 5 Aug 2020 13:50:06 +0000 (15:50 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Wed, 21 Oct 2020 07:22:50 +0000 (03:22 -0400)
gcc/ada/

* sem_ch12.adb (Freeze_Subprogram_Body): Do not move the freeze
node of the package body enclosing the instance when its parent
is in the same declarative part as the freeze node of the parent.

gcc/ada/sem_ch12.adb

index 64f10a25dbe85ac420935b85b040deb9f8c9d83a..16b42bd0cc14b5655093c7ad77a4b36e55a3315f 100644 (file)
@@ -9106,12 +9106,7 @@ package body Sem_Ch12 is
         and then Present (Freeze_Node (Par))
         and then Present (Enc_I)
       then
-         if In_Same_Declarative_Part (Parent (Freeze_Node (Par)), Enc_I)
-           or else
-             (Nkind (Enc_I) = N_Package_Body
-               and then In_Same_Declarative_Part
-                          (Parent (Freeze_Node (Par)), Parent (Enc_I)))
-         then
+         if In_Same_Declarative_Part (Parent (Freeze_Node (Par)), Enc_I) then
             --  The enclosing package may contain several instances. Rather
             --  than computing the earliest point at which to insert its freeze
             --  node, we place it at the end of the declarative part of the