From: Piotr Trojanek Date: Tue, 2 May 2023 10:49:43 +0000 (+0200) Subject: ada: Skip elaboration checks for abstract subprograms on derived types X-Git-Tag: basepoints/gcc-15~8370 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=204dba400b42b75271071b05102a5b46fd2a34d0;p=thirdparty%2Fgcc.git 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. --- 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;