]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Reuse routine for getting from body entity to spec entity
authorPiotr Trojanek <trojanek@adacore.com>
Wed, 29 Mar 2023 14:41:44 +0000 (16:41 +0200)
committerMarc Poulhiès <poulhies@adacore.com>
Mon, 29 May 2023 08:23:19 +0000 (10:23 +0200)
Cleanup related to handling of access-to-subprogram types with Pre and
Post aspects. Behavior is unaffected.

gcc/ada/

* sem_util.adb (Check_Result_And_Post_State): Replace low-level
navigation with a high-level Unique_Entity.

gcc/ada/sem_util.adb

index d71329bbcb29cb58aa3f664c163458e46545979f..64abfb11ce5f348394b39c1bab27a000fc6525bb 100644 (file)
@@ -4546,13 +4546,12 @@ package body Sem_Util is
       --  Local variables
 
       Items        : constant Node_Id := Contract (Subp_Id);
-      Subp_Decl    : constant Node_Id := Unit_Declaration_Node (Subp_Id);
       Case_Prag    : Node_Id := Empty;
       Post_Prag    : Node_Id := Empty;
       Prag         : Node_Id;
       Seen_In_Case : Boolean := False;
       Seen_In_Post : Boolean := False;
-      Spec_Id      : Entity_Id;
+      Spec_Id      : constant Entity_Id := Unique_Entity (Subp_Id);
 
    --  Start of processing for Check_Result_And_Post_State
 
@@ -4570,25 +4569,6 @@ package body Sem_Util is
          return;
       end if;
 
-      --  Retrieve the entity of the subprogram spec (if any)
-
-      if Nkind (Subp_Decl) = N_Subprogram_Body
-        and then Present (Corresponding_Spec (Subp_Decl))
-      then
-         Spec_Id := Corresponding_Spec (Subp_Decl);
-
-      elsif Nkind (Subp_Decl) = N_Subprogram_Body_Stub
-        and then Present (Corresponding_Spec_Of_Stub (Subp_Decl))
-      then
-         Spec_Id := Corresponding_Spec_Of_Stub (Subp_Decl);
-
-      elsif Nkind (Subp_Decl) = N_Entry_Body then
-         Spec_Id := Corresponding_Spec (Subp_Decl);
-
-      else
-         Spec_Id := Subp_Id;
-      end if;
-
       --  Examine all postconditions for attribute 'Result and a post-state
 
       Prag := Pre_Post_Conditions (Items);