Commit ad0c3dd2 by Eric Botcazou Committed by Eric Botcazou

* gcc-interface/cuintp.c (UI_From_gnu): Remove code for 32-bit hosts.

From-SVN: r266265
parent 4ef38900
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> 2018-11-14 Ed Schonberg <schonberg@adacore.com>
* exp_util.ads, exp_util.adb: Change the profile of * exp_util.ads, exp_util.adb: Change the profile of
...@@ -7,11 +16,6 @@ ...@@ -7,11 +16,6 @@
* exp_ch4.adb (Expand_Boolean_Operation): Use this new profile. * exp_ch4.adb (Expand_Boolean_Operation): Use this new profile.
* exp_pakd.adb (Expand_Packed_Boolean_Operator): Ditto. * 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> 2018-11-14 Patrick Bernardi <bernardi@adacore.com>
* libgnarl/a-intnam__linux.ads: Add SIGSYS. * libgnarl/a-intnam__linux.ads: Add SIGSYS.
......
...@@ -142,13 +142,16 @@ UI_From_gnu (tree Input) ...@@ -142,13 +142,16 @@ UI_From_gnu (tree Input)
/* UI_Base is defined so that 5 Uint digits is sufficient to hold the /* UI_Base is defined so that 5 Uint digits is sufficient to hold the
largest possible signed 64-bit value. */ largest possible signed 64-bit value. */
const int Max_For_Dint = 5; const int Max_For_Dint = 5;
int v[Max_For_Dint], i; int v[Max_For_Dint];
Vector_Template temp; Vector_Template temp;
Int_Vector vec; Int_Vector vec;
#if HOST_BITS_PER_WIDE_INT == 64 #if HOST_BITS_PER_WIDE_INT < 64
/* On 64-bit hosts, tree_fits_shwi_p tells whether the input fits in a #error unsupported HOST_BITS_PER_WIDE_INT setting
signed 64-bit integer. Then a truncation tells whether it fits #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. */ in a signed 32-bit integer. */
if (tree_fits_shwi_p (Input)) if (tree_fits_shwi_p (Input))
{ {
...@@ -158,24 +161,11 @@ UI_From_gnu (tree Input) ...@@ -158,24 +161,11 @@ UI_From_gnu (tree Input)
} }
else else
return No_Uint; 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_base = build_int_cst (gnu_type, UI_Base);
gnu_temp = Input; 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, v[i] = tree_to_shwi (fold_build1 (ABS_EXPR, gnu_type,
fold_build2 (TRUNC_MOD_EXPR, gnu_type, fold_build2 (TRUNC_MOD_EXPR, gnu_type,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment