[Ada] Missing check for assigning too-large array to fixed-lower-bound object
authorGary Dismukes <dismukes@adacore.com>
Fri, 19 Mar 2021 23:28:38 +0000 (19:28 -0400)
committerPierre-Marie de Rodat <derodat@adacore.com>
Fri, 18 Jun 2021 08:36:51 +0000 (04:36 -0400)
gcc/ada/

* sem_ch3.adb (Constrain_Index): Set the High_Bound of a
fixed-lower-bound subtype's range to T (the subtype of the FLB
index being constrained) rather than Base_Type (T).

gcc/ada/sem_ch3.adb

index 346850d..9ef937d 100644 (file)
@@ -14397,7 +14397,7 @@ package body Sem_Ch3 is
 
       --  If this is a range for a fixed-lower-bound subtype, then set the
       --  index itype's lower bound to the FLB and the index type's upper bound
-      --  to the high bound of the index base type's high bound, mark the itype
+      --  to the high bound of the index subtype's high bound, mark the itype
       --  as an FLB index subtype, and set the range's Etype to the itype.
 
       if Nkind (S) = N_Range and then Is_FLB_Index then
@@ -14405,7 +14405,7 @@ package body Sem_Ch3 is
            (Def_Id,
             Make_Range (Sloc (S),
               Low_Bound  => Low_Bound (S),
-              High_Bound => Type_High_Bound (Base_Type (T))));
+              High_Bound => Type_High_Bound (T)));
          Set_Is_Fixed_Lower_Bound_Index_Subtype (Def_Id);
 
       else