From: Ed Schonberg Date: Tue, 8 Dec 2020 00:34:01 +0000 (-0500) Subject: [Ada] Crash on inherited component in type extension in generic unit. X-Git-Tag: basepoints/gcc-13~8118 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bb60efc5c75afa2c409c740b970f5f1e6fdd4890;p=thirdparty%2Fgcc.git [Ada] Crash on inherited component in type extension in generic unit. gcc/ada/ * exp_ch3.adb (Expand_Record_Extension): Set Parent_Subtype on the type extension when within a generic unit, even though expansion is disabled, to allow for proper resolution of selected components inherited from an ancestor. --- diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb index b916aef2972d..56924a0460c2 100644 --- a/gcc/ada/exp_ch3.adb +++ b/gcc/ada/exp_ch3.adb @@ -7782,9 +7782,14 @@ package body Exp_Ch3 is -- Expand_Record_Extension is called directly from the semantics, so -- we must check to see whether expansion is active before proceeding, -- because this affects the visibility of selected components in bodies - -- of instances. + -- of instances. Within a generic we still need to set Parent_Subtype + -- link because the visibility of inherited components will have to be + -- verified in subsequent instances. if not Expander_Active then + if Inside_A_Generic and then Ekind (T) = E_Record_Type then + Set_Parent_Subtype (T, Etype (T)); + end if; return; end if;