From 2cbb7a1fb6bf9b68901949bbfaa37ab304dc80cd Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 27 Oct 2019 19:47:07 +0100 Subject: [PATCH] 64-bit mingw port: Fix undefined references to cl_I_constructor_from_[U]L. --- src/integer/conv/cl_I_from_L.cc | 7 ++++++- src/integer/conv/cl_I_from_UL.cc | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/integer/conv/cl_I_from_L.cc b/src/integer/conv/cl_I_from_L.cc index efc6887..bf1af07 100644 --- a/src/integer/conv/cl_I_from_L.cc +++ b/src/integer/conv/cl_I_from_L.cc @@ -11,7 +11,7 @@ #include "cln/number.h" -#if (cl_value_len < 32) +#if (cl_value_len < 32) || (long_bitsize==32) #include "base/digitseq/cl_DS.h" @@ -19,6 +19,7 @@ namespace cln { cl_private_thing cl_I_constructor_from_L (sint32 wert) { +#if (cl_value_len < 32) var uint32 test = wert & minus_bit(cl_value_len-1); // test enthält die Bits, die nicht in den Fixnum-Wert >= 0 reinpassen. if ((test == 0) || (test == (uint32)minus_bit(cl_value_len-1))) @@ -109,6 +110,10 @@ cl_private_thing cl_I_constructor_from_L (sint32 wert) } #endif NOTREACHED +#else // cl_value_len >= 32 + // All bits fit in a fixnum value. + return (cl_private_thing)(cl_combine(cl_FN_tag,wert)); +#endif } } // namespace cln diff --git a/src/integer/conv/cl_I_from_UL.cc b/src/integer/conv/cl_I_from_UL.cc index 1671570..be95e46 100644 --- a/src/integer/conv/cl_I_from_UL.cc +++ b/src/integer/conv/cl_I_from_UL.cc @@ -11,7 +11,7 @@ #include "cln/number.h" -#if (cl_value_len <= 32) +#if (cl_value_len <= 32) || (long_bitsize==32) #include "base/digitseq/cl_DS.h" @@ -19,6 +19,7 @@ namespace cln { cl_private_thing cl_I_constructor_from_UL (uint32 wert) { +#if (cl_value_len <= 32) if ((wert & minus_bit(cl_value_len-1)) == 0) // Bits, die nicht in den Fixnum-Wert >= 0 reinpassen. return (cl_private_thing)(cl_combine(cl_FN_tag,wert)); @@ -89,6 +90,10 @@ cl_private_thing cl_I_constructor_from_UL (uint32 wert) #endif #undef IF_LENGTH #undef UL_maxlength +#else // cl_value_len > 32 + // All bits fit in a fixnum value >= 0. + return (cl_private_thing)(cl_combine(cl_FN_tag,wert)); +#endif } } // namespace cln -- 2.49.0