From 4b3cf8416424a86c312e52c47429d869c45875ce Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Thu, 14 Apr 2022 13:08:38 +0200 Subject: [PATCH] [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. --- gcc/ada/exp_ch4.adb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 -- 2.47.2