From: Justin Squirek Date: Fri, 29 Oct 2021 20:40:17 +0000 (-0400) Subject: [Ada] Crash on expansion of tagged membership test X-Git-Tag: basepoints/gcc-13~3276 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=686b427ff408de245a84ec90640fcf36011be5ab;p=thirdparty%2Fgcc.git [Ada] Crash on expansion of tagged membership test gcc/ada/ * exp_ch4.adb (Tagged_Membership): Use corresponding record type when expanding a tagged membership test on protected types. --- diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index 3db43dd870ac..f3923e914d78 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -15346,6 +15346,17 @@ package body Exp_Ch4 is begin SCIL_Node := Empty; + -- We have to examine the corresponding record type when dealing with + -- protected types instead of the original, unexpanded, type. + + if Ekind (Right_Type) = E_Protected_Type then + Right_Type := Corresponding_Record_Type (Right_Type); + end if; + + if Ekind (Left_Type) = E_Protected_Type then + Left_Type := Corresponding_Record_Type (Left_Type); + end if; + -- In the case where the type is an access type, the test is applied -- using the designated types (needed in Ada 2012 for implicit anonymous -- access conversions, for AI05-0149).