From: Steve Baird Date: Mon, 6 Dec 2021 21:42:51 +0000 (-0800) Subject: [Ada] Avoid building malformed component constraints X-Git-Tag: basepoints/gcc-13~2011 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5bad97d7445d679921e87bc0f94286c3ade02d27;p=thirdparty%2Fgcc.git [Ada] Avoid building malformed component constraints gcc/ada/ * sem_util.adb (Build_Discriminant_Reference): In the unexpected case where we previously would fail an assertion, we instead revert to the old behavior. --- diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 2bc3c95dbeb6..e07e48749d6d 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -2107,11 +2107,7 @@ package body Sem_Util is -- Start of processing for Build_Discriminant_Reference begin - if Obj_Is_Good_Prefix then - return Make_Selected_Component (Loc, - Prefix => Copy_And_Maybe_Dereference (Obj), - Selector_Name => New_Occurrence_Of (Discrim, Loc)); - else + if not Obj_Is_Good_Prefix then -- If the given discriminant is not a component of the given -- object, then try the enclosing object. @@ -2128,10 +2124,15 @@ package body Sem_Util is (Discrim_Name => Discrim_Name, Obj => Name (Parent (Entity (Obj)))); else - pragma Assert (False); - raise Program_Error; + -- We are in some unexpected case here, so revert to the + -- old behavior (by falling through to it). + null; end if; end if; + + return Make_Selected_Component (Loc, + Prefix => Copy_And_Maybe_Dereference (Obj), + Selector_Name => New_Occurrence_Of (Discrim, Loc)); end Build_Discriminant_Reference; ------------------------------------