From: Piotr Trojanek <troja...@adacore.com>

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.

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/ada/sem_util.adb | 22 +---------------------
 1 file changed, 1 insertion(+), 21 deletions(-)

diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index d71329bbcb2..64abfb11ce5 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -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);
-- 
2.40.0

Reply via email to