Simply creating the freeze node for the base type of a discriminated type
without adjusting the scope and the visible declarations leads to an
incorrect tree that crashes the compiler when unnesting the predicate
function.
gcc/ada/ChangeLog:
* sem_ch3.adb (Find_Type_Of_Object): Adjust freezing of the base
type of a discriminated type.
Co-authored-by: Eric Botcazou <[email protected]>
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/ada/sem_ch3.adb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb
index ce75692cbbe..db71829d7f4 100644
--- a/gcc/ada/sem_ch3.adb
+++ b/gcc/ada/sem_ch3.adb
@@ -19228,7 +19228,7 @@ package body Sem_Ch3 is
-- of discriminated private type without a full view.
else
- Insert_Actions (Obj_Def, Freeze_Entity (Base_Type (T), P));
+ Freeze_Before (Obj_Def, Base_Type (T));
end if;
-- Ada 2005 AI-406: the object definition in an object declaration
--
2.53.0