From 19036072c6f7db967a3ecd1b2f3b9440ddbd68d4 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Sat, 16 May 2020 15:42:04 +0200 Subject: [PATCH] [Ada] Small tweak to Narrow_Large_Operation procedure gcc/ada/ * exp_ch4.adb (Narrow_Large_Operation): Use the base type instead of the first subtype of standard integer types as narrower type. --- gcc/ada/exp_ch4.adb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index 6a0b1ce..b40864f 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -14067,13 +14067,15 @@ package body Exp_Ch4 is return; end if; - -- Now pick the narrower type according to the size + -- Now pick the narrower type according to the size. We use the base + -- type instead of the first subtype because operations are done in + -- the base type, so this avoids the need for useless conversions. if Nsiz <= RM_Size (Standard_Integer) then - Ntyp := Standard_Integer; + Ntyp := Etype (Standard_Integer); elsif Nsiz <= RM_Size (Standard_Long_Long_Integer) then - Ntyp := Standard_Long_Long_Integer; + Ntyp := Etype (Standard_Long_Long_Integer); else return; -- 2.7.4