From: Eric Botcazou Date: Tue, 21 May 2024 17:49:32 +0000 (+0200) Subject: ada: Fix assertion failure on predicate involving access parameter X-Git-Tag: basepoints/gcc-16~8042 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c5aed359a563c48f616d58f708c398f8494d7731;p=thirdparty%2Fgcc.git 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. --- diff --git a/gcc/ada/accessibility.adb b/gcc/ada/accessibility.adb index da4d1d9ce2e..298103377a7 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