From fa16e3229499f4c7c5375bd1bc4b713fb1d2e30e Mon Sep 17 00:00:00 2001 From: Javier Miranda Date: Wed, 30 Aug 2023 19:19:13 +0000 Subject: [PATCH] ada: Assertion failure on expansion of record with invariant gcc/ada/ * exp_util.adb (Process_Record_Component): Adjust assertion on the availablity of the invariant procedure; required because the invariant procedure is built by the expander, and hence it is not available compiling generic units or when the sources have errors, since expansion is then disabled. --- gcc/ada/exp_util.adb | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb index 0dafa1cd6be8..5cfadc5245e0 100644 --- a/gcc/ada/exp_util.adb +++ b/gcc/ada/exp_util.adb @@ -3324,7 +3324,13 @@ package body Exp_Util is -- if it has invariants of its own or inherits class-wide -- invariants from parent or interface types. - pragma Assert (Present (Proc_Id)); + -- However, given that the invariant procedure is built by + -- the expander, it is not available compiling generic units + -- or when the sources have errors, since expansion is then + -- disabled. + + pragma Assert (Present (Proc_Id) + or else not Expander_Active); -- Generate: -- Invariant (T (_object).); @@ -3333,7 +3339,9 @@ package body Exp_Util is -- assertions are disabled or Assertion_Policy Ignore is in -- effect. - if not Has_Null_Body (Proc_Id) then + if Present (Proc_Id) + and then not Has_Null_Body (Proc_Id) + then Append_New_To (Comp_Checks, Make_Procedure_Call_Statement (Loc, Name => -- 2.47.2