From 77bd447bb4f1c1a1f864fb944de7e9616180310a Mon Sep 17 00:00:00 2001 From: Paolo Carlini <pcarlini@unitus.it> Date: Mon, 16 Dec 2002 20:52:37 +0100 Subject: [PATCH] re PR libstdc++/8949 (numeric_limits<>::denorm_min() and is_iec559 problems.) 2002-12-16 Paolo Carlini <pcarlini@unitus.it> PR libstdc++/8949 * include/std/std_limits.h (struct numeric_limits<short>, struct numeric_limits<unsigned short>, struct numeric_limits<int>, struct numeric_limits<unsigned int>, struct numeric_limits<long>, struct numeric_limits<unsigned long>, struct numeric_limits<long long>, struct numeric_limits<unsigned long long>): According to 18.2.1.2,53 and 18.2.1.5,1 is_iec559 shall be false. * testsuite/18_support/numeric_limits.cc: Add test04. From-SVN: r60181 --- libstdc++-v3/ChangeLog | 15 +++++++++++++ libstdc++-v3/include/std/std_limits.h | 16 +++++++------- .../testsuite/18_support/numeric_limits.cc | 21 +++++++++++++++++++ 3 files changed, 44 insertions(+), 8 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 356a5808bf89..f8a5ec2c320b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,18 @@ +2002-12-16 Paolo Carlini <pcarlini@unitus.it> + + PR libstdc++/8949 + * include/std/std_limits.h + (struct numeric_limits<short>, + struct numeric_limits<unsigned short>, + struct numeric_limits<int>, + struct numeric_limits<unsigned int>, + struct numeric_limits<long>, + struct numeric_limits<unsigned long>, + struct numeric_limits<long long>, + struct numeric_limits<unsigned long long>): According + to 18.2.1.2,53 and 18.2.1.5,1 is_iec559 shall be false. + * testsuite/18_support/numeric_limits.cc: Add test04. + 2002-12-16 Benjamin Kosnik <bkoz@redhat.com> * configure.in (GLIBCPP_ENABLE_DEBUG): Default to none. diff --git a/libstdc++-v3/include/std/std_limits.h b/libstdc++-v3/include/std/std_limits.h index be4b5f2a90b9..9be69477958f 100644 --- a/libstdc++-v3/include/std/std_limits.h +++ b/libstdc++-v3/include/std/std_limits.h @@ -508,7 +508,7 @@ namespace std static short denorm_min() throw() { return short(); } - static const bool is_iec559 = true; + static const bool is_iec559 = false; static const bool is_bounded = true; static const bool is_modulo = true; @@ -558,7 +558,7 @@ namespace std static unsigned short denorm_min() throw() { return static_cast<unsigned short>(0); } - static const bool is_iec559 = true; + static const bool is_iec559 = false; static const bool is_bounded = true; static const bool is_modulo = true; @@ -608,7 +608,7 @@ namespace std static int denorm_min() throw() { return static_cast<int>(0); } - static const bool is_iec559 = true; + static const bool is_iec559 = false; static const bool is_bounded = true; static const bool is_modulo = true; @@ -658,7 +658,7 @@ namespace std static unsigned int denorm_min() throw() { return static_cast<unsigned int>(0); } - static const bool is_iec559 = true; + static const bool is_iec559 = false; static const bool is_bounded = true; static const bool is_modulo = true; @@ -708,7 +708,7 @@ namespace std static long denorm_min() throw() { return static_cast<long>(0); } - static const bool is_iec559 = true; + static const bool is_iec559 = false; static const bool is_bounded = true; static const bool is_modulo = true; @@ -758,7 +758,7 @@ namespace std static unsigned long denorm_min() throw() { return static_cast<unsigned long>(0); } - static const bool is_iec559 = true; + static const bool is_iec559 = false; static const bool is_bounded = true; static const bool is_modulo = true; @@ -808,7 +808,7 @@ namespace std static long long denorm_min() throw() { return static_cast<long long>(0); } - static const bool is_iec559 = true; + static const bool is_iec559 = false; static const bool is_bounded = true; static const bool is_modulo = true; @@ -858,7 +858,7 @@ namespace std static unsigned long long denorm_min() throw() { return static_cast<unsigned long long>(0); } - static const bool is_iec559 = true; + static const bool is_iec559 = false; static const bool is_bounded = true; static const bool is_modulo = true; diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits.cc b/libstdc++-v3/testsuite/18_support/numeric_limits.cc index 4a1c498bb2dc..540b4b7759f0 100644 --- a/libstdc++-v3/testsuite/18_support/numeric_limits.cc +++ b/libstdc++-v3/testsuite/18_support/numeric_limits.cc @@ -289,12 +289,33 @@ bool test03() return test; } +// libstdc++/8949 +bool test04() +{ + bool test = true; + + VERIFY( !std::numeric_limits<short>::is_iec559 ); + VERIFY( !std::numeric_limits<unsigned short>::is_iec559 ); + VERIFY( !std::numeric_limits<int>::is_iec559 ); + VERIFY( !std::numeric_limits<unsigned int>::is_iec559 ); + VERIFY( !std::numeric_limits<long>::is_iec559 ); + VERIFY( !std::numeric_limits<unsigned long>::is_iec559 ); + VERIFY( !std::numeric_limits<long long>::is_iec559 ); + VERIFY( !std::numeric_limits<unsigned long long>::is_iec559 ); + +#ifdef DEBUG_ASSERT + assert(test); +#endif + + return test; +} int main() { test01(); test02(); test03(); + test04(); test_extrema<char>(); test_extrema<signed char>(); -- GitLab