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.
This commit is contained in:
Steve Baird 2024-10-30 15:34:50 -07:00 committed by Marc Poulhiès
parent b2320a12df
commit 0019e8dc76

View File

@ -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.