From c5aed359a563c48f616d58f708c398f8494d7731 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Tue, 21 May 2024 19:49:32 +0200 Subject: ada: Fix assertion failure on predicate involving access parameter The assertion fails because the Original_Node of the expression has no Etype since its an unanalyzed identifier. gcc/ada/ * accessibility.adb (Accessibility_Level): Apply the processing to Expr when its Original_Node is an unanalyzed identifier. --- gcc/ada/accessibility.adb | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'gcc/ada') diff --git a/gcc/ada/accessibility.adb b/gcc/ada/accessibility.adb index da4d1d9..2981033 100644 --- a/gcc/ada/accessibility.adb +++ b/gcc/ada/accessibility.adb @@ -398,7 +398,7 @@ package body Accessibility is -- Local variables - E : Node_Id := Original_Node (Expr); + E : Node_Id; Pre : Node_Id; -- Start of processing for Accessibility_Level @@ -409,6 +409,17 @@ package body Accessibility is if Present (Param_Entity (Expr)) then E := Param_Entity (Expr); + + -- Use the original node unless it is an unanalyzed identifier, as we + -- don't want to reason on unanalyzed expressions from predicates. + + elsif Nkind (Original_Node (Expr)) /= N_Identifier + or else Analyzed (Original_Node (Expr)) + then + E := Original_Node (Expr); + + else + E := Expr; end if; -- Extract the entity -- cgit v1.1