From: Gary Dismukes Date: Thu, 25 Mar 2021 17:37:58 +0000 (-0400) Subject: [Ada] Compiler crash on sliding of fixed-lower-bound object in Loop_Invariant X-Git-Tag: basepoints/gcc-13~6637 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=eb077d7047629d5704338270ca57b64272627268;p=thirdparty%2Fgcc.git [Ada] Compiler crash on sliding of fixed-lower-bound object in Loop_Invariant gcc/ada/ * exp_util.adb (Expand_Sliding_Conversion): Only perform expansion when Expander_Active is True. Add a comment about this and refine existing comment regarding string literals. --- diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb index ed1a016be48d..d02e587d8537 100644 --- a/gcc/ada/exp_util.adb +++ b/gcc/ada/exp_util.adb @@ -5343,10 +5343,15 @@ package body Exp_Util is All_FLBs_Match : Boolean := True; begin - -- 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 + -- This procedure is called during semantic analysis, and we only expand + -- a sliding conversion when Expander_Active, to avoid doing it during + -- preanalysis (which can lead to problems with the target subtype not + -- getting properly expanded during later full analysis). Also, sliding + -- should never be needed for string literals, because their bounds are + -- determined directly based on the fixed lower bound of Arr_Typ and + -- their length. + + if Expander_Active and then Nkind (N) /= N_String_Literal then Constraints := New_List; Act_Subt := Get_Actual_Subtype (N);