From 204dba400b42b75271071b05102a5b46fd2a34d0 Mon Sep 17 00:00:00 2001
From: Piotr Trojanek <trojanek@adacore.com>
Date: Tue, 2 May 2023 12:49:43 +0200
Subject: [PATCH] ada: Skip elaboration checks for abstract subprograms on
 derived types

Elaboration checks skip abstract subprogram declarations, which have no
body that could be examined. Now these checks also skip abstract
subprograms of a derived type, which have no body either.

gcc/ada/

	* sem_elab.adb (Check_Overriding_Primitive): Prevent Corresponding_Body
	to be called with entity of an abstract subprogram.
---
 gcc/ada/sem_elab.adb | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/gcc/ada/sem_elab.adb b/gcc/ada/sem_elab.adb
index 1e18b9878639..dc81e47da9e6 100644
--- a/gcc/ada/sem_elab.adb
+++ b/gcc/ada/sem_elab.adb
@@ -15263,10 +15263,13 @@ package body Sem_Elab is
             --  Nothing to do for predefined primitives because they are
             --  artifacts of tagged type expansion and cannot override source
             --  primitives. Nothing to do as well for inherited primitives, as
-            --  the check concerns overriding ones.
+            --  the check concerns overriding ones. Finally, nothing to do for
+            --  abstract subprograms, because they have no body that could be
+            --  examined.
 
             if Is_Predefined_Dispatching_Operation (Prim)
               or else not Is_Overriding_Subprogram (Prim)
+              or else Is_Abstract_Subprogram (Prim)
             then
                return;
             end if;
-- 
GitLab