From: Steve Baird Date: Wed, 30 Oct 2024 22:34:50 +0000 (-0700) Subject: ada: Array aggregate with large static bounds causes compiler crash X-Git-Tag: basepoints/gcc-16~4154 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0019e8dc7696f62667816ce321f9b3a1ab3c1837;p=thirdparty%2Fgcc.git ada: Array aggregate with large static bounds causes compiler crash In some cases an array aggregate with statically known bounds and at least one bound outside of the range of a 32-bit signed integer causes a bugbox. gcc/ada/ChangeLog: * exp_aggr.adb (Convert_To_Positional.Flatten): Avoid raising Constraint_Error in UI_To_Int by testing UI_Is_In_Int_Range first. --- diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb index c63d22b58fa4..1cfc97b5bc6f 100644 --- a/gcc/ada/exp_aggr.adb +++ b/gcc/ada/exp_aggr.adb @@ -4509,6 +4509,11 @@ package body Exp_Aggr is return False; end if; + if not (UI_Is_In_Int_Range (Lov) and UI_Is_In_Int_Range (Hiv)) then + -- guard against raising C_E in UI_To_Int + return False; + end if; + -- Determine if set of alternatives is suitable for conversion and -- build an array containing the values in sequence.