https://gcc.gnu.org/g:0019e8dc7696f62667816ce321f9b3a1ab3c1837

commit r15-5399-g0019e8dc7696f62667816ce321f9b3a1ab3c1837
Author: Steve Baird <ba...@adacore.com>
Date:   Wed Oct 30 15:34:50 2024 -0700

    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:
---
 gcc/ada/exp_aggr.adb | 5 +++++
 1 file changed, 5 insertions(+)

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.

Reply via email to