From f44441d80fa8523a2e1b294b8563180202879727 Mon Sep 17 00:00:00 2001 From: Gary Dismukes Date: Thu, 18 Mar 2021 20:23:04 -0400 Subject: [PATCH] [Ada] Error issued on string literal assigned to fixed-lower-bound array gcc/ada/ * exp_util.adb (Expand_Sliding_Conversion): Move test of Is_Fixed_Lower_Bound_Subtype to an assertion. Exclude string literals from sliding expansion. --- gcc/ada/exp_util.adb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb index 19b8c65..ed1a016 100644 --- a/gcc/ada/exp_util.adb +++ b/gcc/ada/exp_util.adb @@ -5323,7 +5323,8 @@ package body Exp_Util is procedure Expand_Sliding_Conversion (N : Node_Id; Arr_Typ : Entity_Id) is pragma Assert (Is_Array_Type (Arr_Typ) - and then not Is_Constrained (Arr_Typ)); + and then not Is_Constrained (Arr_Typ) + and then Is_Fixed_Lower_Bound_Array_Subtype (Arr_Typ)); Constraints : List_Id; Index : Node_Id := First_Index (Arr_Typ); @@ -5342,7 +5343,10 @@ package body Exp_Util is All_FLBs_Match : Boolean := True; begin - if Is_Fixed_Lower_Bound_Array_Subtype (Arr_Typ) then + -- Sliding should never be needed for string literals, because they have + -- their bounds set according to the applicable index constraint. + + if Nkind (N) /= N_String_Literal then Constraints := New_List; Act_Subt := Get_Actual_Subtype (N); -- 2.7.4