This avoids a useless walk of the prefix chain in instances.

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

gcc/ada/

        * sem_ch8.adb (Analyze_Subprogram_Renaming): Move final test on
        In_Instance to outer condition.
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -3975,7 +3975,7 @@ package body Sem_Ch8 is
          --  normally illegal renamings can be constructed when expanding
          --  instantiations.
 
-         elsif Nkind (Nam) = N_Expanded_Name then
+         elsif Nkind (Nam) = N_Expanded_Name and then not In_Instance then
             declare
                function Ult_Expanded_Prefix (N : Node_Id) return Node_Id is
                  (if Nkind (N) /= N_Expanded_Name
@@ -3985,7 +3985,6 @@ package body Sem_Ch8 is
 
             begin
                if Chars (Entity (Ult_Expanded_Prefix (Nam))) = Chars (New_S)
-                 and then not In_Instance
                then
                   Error_Msg_Sloc := Sloc (N);
                   Error_Msg_NE


Reply via email to