* gcc-interface/cuintp.c (UI_From_gnu): Remove code for 32-bit hosts.
authorEric Botcazou <ebotcazou@adacore.com>
Mon, 19 Nov 2018 09:47:36 +0000 (09:47 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Mon, 19 Nov 2018 09:47:36 +0000 (09:47 +0000)
From-SVN: r266265

gcc/ada/ChangeLog
gcc/ada/gcc-interface/cuintp.c

index 589f52f3c9252016e27a5d676107361b1361b7c1..082fe5aaa45a021e0047a0259de451cbd1b85651 100644 (file)
@@ -1,3 +1,12 @@
+2018-11-19  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/cuintp.c (UI_From_gnu): Remove code for 32-bit hosts.
+
+2018-11-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/misc.c (gnat_init_gcc_eh): Do not override the switch
+       -fnon-call-exceptions passed on the command line in -gnatp mode.
+
 2018-11-14  Ed Schonberg  <schonberg@adacore.com>
 
        * exp_util.ads, exp_util.adb: Change the profile of
@@ -7,11 +16,6 @@
        * exp_ch4.adb (Expand_Boolean_Operation): Use this new profile.
        * exp_pakd.adb (Expand_Packed_Boolean_Operator): Ditto.
 
-2018-11-15  Eric Botcazou  <ebotcazou@adacore.com>
-
-       * gcc-interface/misc.c (gnat_init_gcc_eh): Do not override the switch
-       -fnon-call-exceptions passed on the command line in -gnatp mode.
-
 2018-11-14  Patrick Bernardi  <bernardi@adacore.com>
 
        * libgnarl/a-intnam__linux.ads: Add SIGSYS.
index a22662e8af496089a017c01ab0c47571ebea0fe7..420686cf242e78200a3d0507475a22865a36e8c8 100644 (file)
@@ -142,13 +142,16 @@ UI_From_gnu (tree Input)
   /* UI_Base is defined so that 5 Uint digits is sufficient to hold the
      largest possible signed 64-bit value.  */
   const int Max_For_Dint = 5;
-  int v[Max_For_Dint], i;
+  int v[Max_For_Dint];
   Vector_Template temp;
   Int_Vector vec;
 
-#if HOST_BITS_PER_WIDE_INT == 64
-  /* On 64-bit hosts, tree_fits_shwi_p tells whether the input fits in a
-     signed 64-bit integer.  Then a truncation tells whether it fits
+#if HOST_BITS_PER_WIDE_INT < 64
+#error unsupported HOST_BITS_PER_WIDE_INT setting
+#endif
+
+  /* On 64-bit hosts, tree_fits_shwi_p tells whether the input fits in
+     a signed 64-bit integer.  Then a truncation tells whether it fits
      in a signed 32-bit integer.  */
   if (tree_fits_shwi_p (Input))
     {
@@ -158,24 +161,11 @@ UI_From_gnu (tree Input)
     }
   else
     return No_Uint;
-#else
-  /* On 32-bit hosts, tree_fits_shwi_p tells whether the input fits in a
-     signed 32-bit integer.  Then a sign test tells whether it fits
-     in a signed 64-bit integer.  */
-  if (tree_fits_shwi_p (Input))
-    return UI_From_Int (tree_to_shwi (Input));
-
-  gcc_assert (TYPE_PRECISION (gnu_type) <= 64);
-  if (TYPE_UNSIGNED (gnu_type)
-      && TYPE_PRECISION (gnu_type) == 64
-      && wi::neg_p (Input, SIGNED))
-    return No_Uint;
-#endif
 
   gnu_base = build_int_cst (gnu_type, UI_Base);
   gnu_temp = Input;
 
-  for (i = Max_For_Dint - 1; i >= 0; i--)
+  for (int i = Max_For_Dint - 1; i >= 0; i--)
     {
       v[i] = tree_to_shwi (fold_build1 (ABS_EXPR, gnu_type,
                                        fold_build2 (TRUNC_MOD_EXPR, gnu_type,