From: Eric Botcazou Date: Sat, 16 May 2020 13:42:04 +0000 (+0200) Subject: [Ada] Small tweak to Narrow_Large_Operation procedure X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=19036072c6f7db967a3ecd1b2f3b9440ddbd68d4;p=gcc.git [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. --- diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index 6a0b1ce763e..b40864fb5b4 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;