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