From 686b427ff408de245a84ec90640fcf36011be5ab Mon Sep 17 00:00:00 2001 From: Justin Squirek Date: Fri, 29 Oct 2021 16:40:17 -0400 Subject: [PATCH] [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. --- gcc/ada/exp_ch4.adb | 11 +++++++++++ 1 file changed, 11 insertions(+) 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). -- 2.47.2