aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2019-05-03 20:13:31 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2019-05-03 20:13:31 +0100
commit56e5b093de436686effacab1f3211f8695be39a6 (patch)
tree48d119952209a7662663077dda354d3fbca36916
parent16df7038715e9644dc3e23984439731db4333e57 (diff)
downloadgcc-56e5b093de436686effacab1f3211f8695be39a6.zip
gcc-56e5b093de436686effacab1f3211f8695be39a6.tar.gz
gcc-56e5b093de436686effacab1f3211f8695be39a6.tar.bz2
Avoid -Woverflow warning in __numeric_limits_integer
This is the same fix as was done for std::numeric_limits in r183905. PR libstdc++/52119 * include/ext/numeric_traits.h (__glibcxx_min): Avoid integer overflow warning with -Wpedantic -Wsystem-headers. From-SVN: r270858
-rw-r--r--libstdc++-v3/ChangeLog6
-rw-r--r--libstdc++-v3/include/ext/numeric_traits.h4
2 files changed, 8 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 6c93604..b139014 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,9 @@
+2019-05-03 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/52119
+ * include/ext/numeric_traits.h (__glibcxx_min): Avoid integer
+ overflow warning with -Wpedantic -Wsystem-headers.
+
2019-05-02 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/90314
diff --git a/libstdc++-v3/include/ext/numeric_traits.h b/libstdc++-v3/include/ext/numeric_traits.h
index 67993fd..43ba1c8 100644
--- a/libstdc++-v3/include/ext/numeric_traits.h
+++ b/libstdc++-v3/include/ext/numeric_traits.h
@@ -39,13 +39,13 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
_GLIBCXX_BEGIN_NAMESPACE_VERSION
// Compile time constants for builtin types.
- // Sadly std::numeric_limits member functions cannot be used for this.
+ // In C++98 std::numeric_limits member functions cannot be used for this.
#define __glibcxx_signed(_Tp) ((_Tp)(-1) < 0)
#define __glibcxx_digits(_Tp) \
(sizeof(_Tp) * __CHAR_BIT__ - __glibcxx_signed(_Tp))
#define __glibcxx_min(_Tp) \
- (__glibcxx_signed(_Tp) ? (_Tp)1 << __glibcxx_digits(_Tp) : (_Tp)0)
+ (__glibcxx_signed(_Tp) ? -__glibcxx_max(_Tp) - 1 : (_Tp)0)
#define __glibcxx_max(_Tp) \
(__glibcxx_signed(_Tp) ? \