From: Eric Botcazou <[email protected]>
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.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/ada/accessibility.adb | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
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
--
2.45.1