This is a return convention mismatch coming from a discrepancy of the
Returns_By_Ref flag for the inherited function.

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

gcc/ada/

        * sem_ch3.adb (Derive_Subprogram): For a function, also copy the
        Returns_By_Ref flag from the parent.
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb
--- a/gcc/ada/sem_ch3.adb
+++ b/gcc/ada/sem_ch3.adb
@@ -16333,6 +16333,7 @@ package body Sem_Ch3 is
 
       if Ekind (New_Subp) = E_Function then
          Set_Mechanism (New_Subp, Mechanism (Parent_Subp));
+         Set_Returns_By_Ref (New_Subp, Returns_By_Ref (Parent_Subp));
       end if;
 
       --  Ada 2022 (AI12-0279): If a Yield aspect is specified True for a


Reply via email to