[Ada] Small improvement to Optimize_Length_Comparison
authorEric Botcazou <ebotcazou@adacore.com>
Sat, 18 Apr 2020 17:26:03 +0000 (19:26 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Thu, 18 Jun 2020 09:08:12 +0000 (05:08 -0400)
2020-06-18  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* exp_ch4.adb (Optimize_Length_Comparison): Accept 32-bit values
in the full unsigned range.

gcc/ada/exp_ch4.adb

index e7db7b0150f69912826ee5ebdbc22834261d78f2..c4cd9b59f7ba8581e5acdc52034484c89a114263 100644 (file)
@@ -13898,13 +13898,14 @@ package body Exp_Ch4 is
             end if;
          end if;
 
-         --  Here we have to make sure of being within 32-bits
+         --  Here we have to make sure of being within a 32-bit range (take the
+         --  full unsigned range so the length of 32-bit arrays is accepted).
 
          Determine_Range (N, OK, Lo, Hi, Assume_Valid => True);
 
          if not OK
            or else Lo < Uint_0
-           or else Hi > UI_From_Int (Int'Last)
+           or else Hi > Uint_2 ** 32
          then
             return False;
          end if;