aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2012-04-29 09:25:17 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2012-04-29 09:25:17 +0000
commit1c8300874e8d91423b4ad7651684172f9b8cee57 (patch)
treec6b5dbb19a125bf76edbeb33a6bacb81af03e844 /libstdc++-v3
parent94ee697923f5a93881edbc5e1b3f810b290f0fc7 (diff)
downloadgcc-1c8300874e8d91423b4ad7651684172f9b8cee57.zip
gcc-1c8300874e8d91423b4ad7651684172f9b8cee57.tar.gz
gcc-1c8300874e8d91423b4ad7651684172f9b8cee57.tar.bz2
re PR libstdc++/22200 (numeric_limits<signed>::is_modulo is inconsistent with gcc)
2012-04-29 Marc Glisse <marc.glisse@inria.fr> PR libstdc++/22200 * include/std/limits (numeric_limits<>::is_modulo): False for signed types. From-SVN: r186944
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog11
-rw-r--r--libstdc++-v3/include/std/limits31
2 files changed, 26 insertions, 16 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 269a545..b91668a 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,7 +1,14 @@
+2012-04-29 Marc Glisse <marc.glisse@inria.fr>
+
+ PR libstdc++/22200
+ * include/std/limits (numeric_limits<>::is_modulo): False for
+ signed types.
+
2012-04-25 Benjamin Kosnik <bkoz@redhat.com>
- * include/bits/hashtable.h: Adjust doxygen markup for base classes.
- * include/bits/hashtable_policy.h: Same.
+ * include/bits/hashtable.h: Adjust doxygen markup for base
+ classes.
+ * include/bits/hashtable_policy.h: Same.
2012-04-25 Benjamin Kosnik <bkoz@redhat.com>
diff --git a/libstdc++-v3/include/std/limits b/libstdc++-v3/include/std/limits
index e7a6e8f..aff853b 100644
--- a/libstdc++-v3/include/std/limits
+++ b/libstdc++-v3/include/std/limits
@@ -270,10 +270,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
false for arbitrary precision types.</em> [18.2.1.2]/54 */
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = false;
- /** True if the type is @e modulo, that is, if it is possible to add two
- positive numbers and have a result that wraps around to a third number
- that is less. Typically false for floating types, true for unsigned
- integers, and true for signed integers. */
+ /** True if the type is @e modulo. A type is modulo if, for any
+ operation involving +, -, or * on values of that type whose
+ result would fall outside the range [min(),max()], the value
+ returned differs from the true value by an integer multiple of
+ max() - min() + 1. On most machines, this is false for floating
+ types, true for unsigned integers, and true for signed integers.
+ See PR22200 about signed integers. */
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
/** True if trapping is implemented for this type. */
@@ -494,7 +497,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
- static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+ static _GLIBCXX_USE_CONSTEXPR bool is_modulo = !is_signed;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
@@ -564,7 +567,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
- static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+ static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
@@ -705,7 +708,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
- static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+ static _GLIBCXX_USE_CONSTEXPR bool is_modulo = !is_signed;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
@@ -768,7 +771,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
static constexpr bool is_iec559 = false;
static constexpr bool is_bounded = true;
- static constexpr bool is_modulo = true;
+ static constexpr bool is_modulo = !is_signed;
static constexpr bool traps = __glibcxx_integral_traps;
static constexpr bool tinyness_before = false;
@@ -829,7 +832,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
static constexpr bool is_iec559 = false;
static constexpr bool is_bounded = true;
- static constexpr bool is_modulo = true;
+ static constexpr bool is_modulo = !is_signed;
static constexpr bool traps = __glibcxx_integral_traps;
static constexpr bool tinyness_before = false;
@@ -896,7 +899,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
- static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+ static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
@@ -1036,7 +1039,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
- static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+ static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
@@ -1175,7 +1178,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
- static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+ static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
@@ -1318,7 +1321,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
- static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+ static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
@@ -1465,7 +1468,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
- static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
+ static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
static _GLIBCXX_USE_CONSTEXPR bool traps
= __glibcxx_integral_traps;