mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 03:46:53 -05:00
re PR libstdc++/31481 (GCC 4.2.0 incompatible with STLport 5.1.3)
2007-04-07 Paolo Carlini <pcarlini@suse.de> PR libstdc++/31481 * include/ext/type_traits.h (__numeric_traits): Move... * include/ext/numeric_traits.h: ... here; fix type of __max_digits10. * include/Makefile.am: Add. * include/ext/pb_ds/detail/type_utils.hpp: Include <ext/numeric_traits.h> too. * include/tr1/random: Likewise. * testsuite/ext/type_traits/numeric_traits.cc: Move... * testsuite/ext/numeric_traits/numeric_traits.cc: ... here. * include/Makefile.in: Regenerate. * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Adjust dg-error line number. * testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Likewise. * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Likewise. * testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Likewise. From-SVN: r123637
This commit is contained in:
committed by
Paolo Carlini
parent
858e05a663
commit
f5294c77ff
@@ -1,3 +1,25 @@
|
||||
2007-04-07 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
PR libstdc++/31481
|
||||
* include/ext/type_traits.h (__numeric_traits): Move...
|
||||
* include/ext/numeric_traits.h: ... here; fix type of
|
||||
__max_digits10.
|
||||
* include/Makefile.am: Add.
|
||||
* include/ext/pb_ds/detail/type_utils.hpp: Include
|
||||
<ext/numeric_traits.h> too.
|
||||
* include/tr1/random: Likewise.
|
||||
* testsuite/ext/type_traits/numeric_traits.cc: Move...
|
||||
* testsuite/ext/numeric_traits/numeric_traits.cc: ... here.
|
||||
* include/Makefile.in: Regenerate.
|
||||
* testsuite/ext/type_traits/remove_unsigned_integer_neg.cc:
|
||||
Adjust dg-error line number.
|
||||
* testsuite/ext/type_traits/add_unsigned_floating_neg.cc:
|
||||
Likewise.
|
||||
* testsuite/ext/type_traits/remove_unsigned_floating_neg.cc:
|
||||
Likewise.
|
||||
* testsuite/ext/type_traits/add_unsigned_integer_neg.cc:
|
||||
Likewise.
|
||||
|
||||
2007-04-03 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
* include/bits/stl_map.h (map<>::insert(iterator, const value_type&):
|
||||
|
||||
@@ -534,6 +534,7 @@ ext_headers = \
|
||||
${ext_srcdir}/mt_allocator.h \
|
||||
${ext_srcdir}/new_allocator.h \
|
||||
${ext_srcdir}/numeric \
|
||||
${ext_srcdir}/numeric_traits.h \
|
||||
${ext_srcdir}/pod_char_traits.h \
|
||||
${ext_srcdir}/pool_allocator.h \
|
||||
${ext_srcdir}/rb_tree \
|
||||
|
||||
@@ -756,6 +756,7 @@ ext_headers = \
|
||||
${ext_srcdir}/mt_allocator.h \
|
||||
${ext_srcdir}/new_allocator.h \
|
||||
${ext_srcdir}/numeric \
|
||||
${ext_srcdir}/numeric_traits.h \
|
||||
${ext_srcdir}/pod_char_traits.h \
|
||||
${ext_srcdir}/pool_allocator.h \
|
||||
${ext_srcdir}/rb_tree \
|
||||
|
||||
98
libstdc++-v3/include/ext/numeric_traits.h
Normal file
98
libstdc++-v3/include/ext/numeric_traits.h
Normal file
@@ -0,0 +1,98 @@
|
||||
// -*- C++ -*-
|
||||
|
||||
// Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the terms
|
||||
// of the GNU General Public License as published by the Free Software
|
||||
// Foundation; either version 2, or (at your option) any later
|
||||
// version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
// USA.
|
||||
|
||||
// As a special exception, you may use this file as part of a free
|
||||
// software library without restriction. Specifically, if other files
|
||||
// instantiate templates or use macros or inline functions from this
|
||||
// file, or you compile this file and link it with other files to
|
||||
// produce an executable, this file does not by itself cause the
|
||||
// resulting executable to be covered by the GNU General Public
|
||||
// License. This exception does not however invalidate any other
|
||||
// reasons why the executable file might be covered by the GNU General
|
||||
// Public License.
|
||||
|
||||
/** @file ext/numeric_traits.h
|
||||
* This file is a GNU extension to the Standard C++ Library.
|
||||
*/
|
||||
|
||||
#ifndef _EXT_NUMERIC_TRAITS
|
||||
#define _EXT_NUMERIC_TRAITS 1
|
||||
|
||||
#pragma GCC system_header
|
||||
|
||||
#include <limits>
|
||||
#include <bits/cpp_type_traits.h>
|
||||
#include <ext/type_traits.h>
|
||||
|
||||
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
|
||||
|
||||
// Compile time constants for builtin types.
|
||||
// Sadly 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)
|
||||
|
||||
#define __glibcxx_max(_Tp) \
|
||||
(__glibcxx_signed(_Tp) ? \
|
||||
(((((_Tp)1 << (__glibcxx_digits(_Tp) - 1)) - 1) << 1) + 1) : ~(_Tp)0)
|
||||
|
||||
template<typename _Value>
|
||||
struct __numeric_traits_integer
|
||||
{
|
||||
// Only integers for initialization of member constant.
|
||||
static const _Value __min = __glibcxx_min(_Value);
|
||||
static const _Value __max = __glibcxx_max(_Value);
|
||||
};
|
||||
|
||||
template<typename _Value>
|
||||
const _Value __numeric_traits_integer<_Value>::__min;
|
||||
|
||||
template<typename _Value>
|
||||
const _Value __numeric_traits_integer<_Value>::__max;
|
||||
|
||||
template<typename _Value>
|
||||
struct __numeric_traits_floating
|
||||
{
|
||||
// Only floating point types. See N1822.
|
||||
static const int __max_digits10 =
|
||||
2 + std::numeric_limits<_Value>::digits * 3010/10000;
|
||||
};
|
||||
|
||||
template<typename _Value>
|
||||
const int __numeric_traits_floating<_Value>::__max_digits10;
|
||||
|
||||
template<typename _Value>
|
||||
struct __numeric_traits
|
||||
: public __conditional_type<std::__is_integer<_Value>::__value,
|
||||
__numeric_traits_integer<_Value>,
|
||||
__numeric_traits_floating<_Value> >::__type
|
||||
{ };
|
||||
|
||||
_GLIBCXX_END_NAMESPACE
|
||||
|
||||
#undef __glibcxx_signed
|
||||
#undef __glibcxx_min
|
||||
#undef __glibcxx_max
|
||||
#undef __glibcxx_digits
|
||||
|
||||
#endif
|
||||
@@ -52,6 +52,7 @@
|
||||
#include <utility>
|
||||
#include <tr1/type_traits>
|
||||
#include <ext/type_traits.h>
|
||||
#include <ext/numeric_traits.h>
|
||||
|
||||
namespace pb_ds
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// -*- C++ -*-
|
||||
|
||||
// Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the terms
|
||||
@@ -39,8 +39,6 @@
|
||||
|
||||
#include <cstddef>
|
||||
#include <utility>
|
||||
#include <limits>
|
||||
#include <iosfwd> // std::streamsize
|
||||
#include <bits/cpp_type_traits.h>
|
||||
|
||||
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
|
||||
@@ -150,51 +148,6 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
|
||||
template<>
|
||||
struct __remove_unsigned<wchar_t>;
|
||||
|
||||
|
||||
// Compile time constants for builtin types.
|
||||
// Sadly 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)
|
||||
|
||||
#define __glibcxx_max(_Tp) \
|
||||
(__glibcxx_signed(_Tp) ? ((_Tp)1 << __glibcxx_digits(_Tp)) - 1 : ~(_Tp)0)
|
||||
|
||||
template<typename _Value>
|
||||
struct __numeric_traits_integer
|
||||
{
|
||||
// Only integers for initialization of member constant.
|
||||
static const _Value __min = __glibcxx_min(_Value);
|
||||
static const _Value __max = __glibcxx_max(_Value);
|
||||
};
|
||||
|
||||
template<typename _Value>
|
||||
const _Value __numeric_traits_integer<_Value>::__min;
|
||||
|
||||
template<typename _Value>
|
||||
const _Value __numeric_traits_integer<_Value>::__max;
|
||||
|
||||
template<typename _Value>
|
||||
struct __numeric_traits_floating
|
||||
{
|
||||
// Only floating point types. See N1822.
|
||||
static const std::streamsize __max_digits10 =
|
||||
2 + std::numeric_limits<_Value>::digits * 3010/10000;
|
||||
};
|
||||
|
||||
template<typename _Value>
|
||||
const std::streamsize __numeric_traits_floating<_Value>::__max_digits10;
|
||||
|
||||
template<typename _Value>
|
||||
struct __numeric_traits
|
||||
: public __conditional_type<std::__is_integer<_Value>::__value,
|
||||
__numeric_traits_integer<_Value>,
|
||||
__numeric_traits_floating<_Value> >::__type
|
||||
{ };
|
||||
|
||||
_GLIBCXX_END_NAMESPACE
|
||||
|
||||
#endif
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
#include <tr1/type_traits>
|
||||
#include <tr1/cmath>
|
||||
#include <ext/type_traits.h>
|
||||
#include <ext/numeric_traits.h>
|
||||
#include <bits/concept_check.h>
|
||||
#include <debug/debug.h>
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
// USA.
|
||||
|
||||
#include <ext/type_traits.h>
|
||||
#include <ext/numeric_traits.h>
|
||||
|
||||
using __gnu_cxx::__numeric_traits;
|
||||
template struct __numeric_traits<short>;
|
||||
@@ -1,7 +1,7 @@
|
||||
// { dg-do compile }
|
||||
// -*- C++ -*-
|
||||
|
||||
// Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2006, 2007 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@@ -36,5 +36,5 @@ int main()
|
||||
}
|
||||
|
||||
// { dg-error "instantiated from" "" { target *-*-* } 29 }
|
||||
// { dg-error "no type" "" { target *-*-* } 76 }
|
||||
// { dg-error "no type" "" { target *-*-* } 74 }
|
||||
// { dg-excess-errors "In instantiation of" }
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// { dg-do compile }
|
||||
// -*- C++ -*-
|
||||
|
||||
// Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2006, 2007 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@@ -37,4 +37,4 @@ int main()
|
||||
}
|
||||
|
||||
// { dg-error "invalid use of incomplete" "" { target *-*-* } 29 }
|
||||
// { dg-error "declaration of" "" { target *-*-* } 71 }
|
||||
// { dg-error "declaration of" "" { target *-*-* } 69 }
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// { dg-do compile }
|
||||
// -*- C++ -*-
|
||||
|
||||
// Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2006, 2007 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@@ -36,5 +36,5 @@ int main()
|
||||
}
|
||||
|
||||
// { dg-error "instantiated from" "" { target *-*-* } 29 }
|
||||
// { dg-error "no type" "" { target *-*-* } 119 }
|
||||
// { dg-error "no type" "" { target *-*-* } 117 }
|
||||
// { dg-excess-errors "In instantiation of" }
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// { dg-do compile }
|
||||
// -*- C++ -*-
|
||||
|
||||
// Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
// Copyright (C) 2006, 2007 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
@@ -37,4 +37,4 @@ int main()
|
||||
}
|
||||
|
||||
// { dg-error "invalid use of incomplete" "" { target *-*-* } 29 }
|
||||
// { dg-error "declaration of" "" { target *-*-* } 114 }
|
||||
// { dg-error "declaration of" "" { target *-*-* } 112 }
|
||||
|
||||
Reference in New Issue
Block a user