diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 356a5808bf8..f8a5ec2c320 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,18 @@ +2002-12-16 Paolo Carlini + + PR libstdc++/8949 + * include/std/std_limits.h + (struct numeric_limits, + struct numeric_limits, + struct numeric_limits, + struct numeric_limits, + struct numeric_limits, + struct numeric_limits, + struct numeric_limits, + struct numeric_limits): 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 * 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 be4b5f2a90b..9be69477958 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(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(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(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(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(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(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(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 4a1c498bb2d..540b4b7759f 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::is_iec559 ); + VERIFY( !std::numeric_limits::is_iec559 ); + VERIFY( !std::numeric_limits::is_iec559 ); + VERIFY( !std::numeric_limits::is_iec559 ); + VERIFY( !std::numeric_limits::is_iec559 ); + VERIFY( !std::numeric_limits::is_iec559 ); + VERIFY( !std::numeric_limits::is_iec559 ); + VERIFY( !std::numeric_limits::is_iec559 ); + +#ifdef DEBUG_ASSERT + assert(test); +#endif + + return test; +} int main() { test01(); test02(); test03(); + test04(); test_extrema(); test_extrema();