]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Fix crash during function return analysis
authorMarc Poulhiès <poulhies@adacore.com>
Tue, 7 Mar 2023 15:35:48 +0000 (16:35 +0100)
committerMarc Poulhiès <poulhies@adacore.com>
Thu, 25 May 2023 07:44:17 +0000 (09:44 +0200)
The compiler would crash when checking type relation between the
function's return type and the type of the expression used in the return
statement. It would not work if the function's return type is an access
type and the expression is not.

gcc/ada/

* sem_ch6.adb (Analyze_Function_Return): Add missing
Is_Access_Type check before accessing the Designated_Type field.

gcc/ada/sem_ch6.adb

index 7c90747f2931cbd20e99947729339a41f66354ef..6df1c8dedd35e1f7d9fe1840a0dd894c37776081 100644 (file)
@@ -847,6 +847,7 @@ package body Sem_Ch6 is
               and then Serious_Errors_Detected = 0
               and then Is_Access_Type (R_Type)
               and then Nkind (Expr) not in N_Null | N_Raise_Expression
+              and then Is_Access_Type (Etype (Expr))
               and then Is_Interface (Designated_Type (R_Type))
               and then Is_Progenitor (Designated_Type (R_Type),
                                       Designated_Type (Etype (Expr)))