From e7128eabb9612f5fc5012990c2c0e15c10d82ca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Poulhi=C3=A8s?= Date: Thu, 25 May 2023 10:05:57 +0200 Subject: [PATCH] ada: Fix crash during function return analysis 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. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/sem_ch6.adb | 1 + 1 file changed, 1 insertion(+) diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb index d4701aed0f7a..dcec82e7f213 100644 --- a/gcc/ada/sem_ch6.adb +++ b/gcc/ada/sem_ch6.adb @@ -838,6 +838,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)))