From: Eric Botcazou Date: Thu, 14 Apr 2022 11:08:38 +0000 (+0200) Subject: [Ada] Preserve and reuse original type in Narrow_Large_Operation X-Git-Tag: basepoints/gcc-14~6556 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b3cf8416424a86c312e52c47429d869c45875ce;p=thirdparty%2Fgcc.git [Ada] Preserve and reuse original type in Narrow_Large_Operation Instead of using that of Original_Node (N) after rewriting, which does not work if N had previously been rewritten. gcc/ada/ * exp_ch4.adb (Narrow_Large_Operation): Preserve and reuse Etype. --- diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index 9e86b4d81a5..75f0e564e74 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -14108,6 +14108,7 @@ package body Exp_Ch4 is procedure Narrow_Large_Operation (N : Node_Id) is Kind : constant Node_Kind := Nkind (N); + Otyp : constant Entity_Id := Etype (N); In_Rng : constant Boolean := Kind = N_In; Binary : constant Boolean := Kind in N_Binary_Op or else In_Rng; Compar : constant Boolean := Kind in N_Op_Compare or else In_Rng; @@ -14262,8 +14263,7 @@ package body Exp_Ch4 is -- Analyze it with the comparison type and checks suppressed since -- the conversions of the operands cannot overflow. - Analyze_And_Resolve - (N, Etype (Original_Node (N)), Suppress => Overflow_Check); + Analyze_And_Resolve (N, Otyp, Suppress => Overflow_Check); else -- Analyze it with the narrower type and checks suppressed, but only