summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3/libsupc++
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-12 15:12:40 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-12 15:12:40 +0000
commitcdd84c16b7d080cabce6adf00dcfa3388e03f6cf (patch)
tree07b1866f06db09af0d2220801cca3536892f6058 /libstdc++-v3/libsupc++
parent969baf696647921cdadad2cd03d45312f7939145 (diff)
downloadppe42-gcc-cdd84c16b7d080cabce6adf00dcfa3388e03f6cf.tar.gz
ppe42-gcc-cdd84c16b7d080cabce6adf00dcfa3388e03f6cf.zip
2012-03-12 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/52562 * libsupc++/typeinfo (type_info::name, before, operator==, operator!=): Mark noexcept in C++11 mode. * libsupc++/tinfo.cc (type_info::operator==): Adjust. * libsupc++/tinfo2.cc (type_info::before): Likewise. * testsuite/18_support/type_info/52562.cc: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185235 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/libsupc++')
-rw-r--r--libstdc++-v3/libsupc++/tinfo.cc4
-rw-r--r--libstdc++-v3/libsupc++/tinfo2.cc5
-rw-r--r--libstdc++-v3/libsupc++/typeinfo16
3 files changed, 13 insertions, 12 deletions
diff --git a/libstdc++-v3/libsupc++/tinfo.cc b/libstdc++-v3/libsupc++/tinfo.cc
index eba74dbdada..d7affedfc27 100644
--- a/libstdc++-v3/libsupc++/tinfo.cc
+++ b/libstdc++-v3/libsupc++/tinfo.cc
@@ -1,6 +1,6 @@
// Methods for type_info for -*- C++ -*- Run Time Type Identification.
// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-// 2003, 2004, 2005, 2006, 2007, 2009
+// 2003, 2004, 2005, 2006, 2007, 2009, 2012
// Free Software Foundation
//
// This file is part of GCC.
@@ -36,7 +36,7 @@ std::type_info::
// We can't rely on common symbols being shared between shared objects.
bool std::type_info::
-operator== (const std::type_info& arg) const
+operator== (const std::type_info& arg) const _GLIBCXX_NOEXCEPT
{
#if __GXX_MERGED_TYPEINFO_NAMES
return name () == arg.name ();
diff --git a/libstdc++-v3/libsupc++/tinfo2.cc b/libstdc++-v3/libsupc++/tinfo2.cc
index 0182c6cc0de..e4c36649f34 100644
--- a/libstdc++-v3/libsupc++/tinfo2.cc
+++ b/libstdc++-v3/libsupc++/tinfo2.cc
@@ -1,6 +1,7 @@
// Methods for type_info for -*- C++ -*- Run Time Type Identification.
-// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2009
+// Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2009,
+// 2012
// Free Software Foundation
//
// This file is part of GCC.
@@ -32,7 +33,7 @@ using std::type_info;
#if !__GXX_TYPEINFO_EQUALITY_INLINE
bool
-type_info::before (const type_info &arg) const
+type_info::before (const type_info &arg) const _GLIBCXX_NOEXCEPT
{
#if __GXX_MERGED_TYPEINFO_NAMES
return name () < arg.name ();
diff --git a/libstdc++-v3/libsupc++/typeinfo b/libstdc++-v3/libsupc++/typeinfo
index f0382d64f76..bf0935cfb59 100644
--- a/libstdc++-v3/libsupc++/typeinfo
+++ b/libstdc++-v3/libsupc++/typeinfo
@@ -98,15 +98,15 @@ namespace std
/** Returns an @e implementation-defined byte string; this is not
* portable between compilers! */
- const char* name() const
+ const char* name() const _GLIBCXX_NOEXCEPT
{ return __name[0] == '*' ? __name + 1 : __name; }
#if !__GXX_TYPEINFO_EQUALITY_INLINE
// In old abi, or when weak symbols are not supported, there can
// be multiple instances of a type_info object for one
// type. Uniqueness must use the _name value, not object address.
- bool before(const type_info& __arg) const;
- bool operator==(const type_info& __arg) const;
+ bool before(const type_info& __arg) const _GLIBCXX_NOEXCEPT;
+ bool operator==(const type_info& __arg) const _GLIBCXX_NOEXCEPT;
#else
#if !__GXX_MERGED_TYPEINFO_NAMES
/** Returns true if @c *this precedes @c __arg in the implementation's
@@ -114,12 +114,12 @@ namespace std
// Even with the new abi, on systems that support dlopen
// we can run into cases where type_info names aren't merged,
// so we still need to do string comparison.
- bool before(const type_info& __arg) const
+ bool before(const type_info& __arg) const _GLIBCXX_NOEXCEPT
{ return (__name[0] == '*' && __arg.__name[0] == '*')
? __name < __arg.__name
: __builtin_strcmp (__name, __arg.__name) < 0; }
- bool operator==(const type_info& __arg) const
+ bool operator==(const type_info& __arg) const _GLIBCXX_NOEXCEPT
{
return ((__name == __arg.__name)
|| (__name[0] != '*' &&
@@ -128,14 +128,14 @@ namespace std
#else
// On some targets we can rely on type_info's NTBS being unique,
// and therefore address comparisons are sufficient.
- bool before(const type_info& __arg) const
+ bool before(const type_info& __arg) const _GLIBCXX_NOEXCEPT
{ return __name < __arg.__name; }
- bool operator==(const type_info& __arg) const
+ bool operator==(const type_info& __arg) const _GLIBCXX_NOEXCEPT
{ return __name == __arg.__name; }
#endif
#endif
- bool operator!=(const type_info& __arg) const
+ bool operator!=(const type_info& __arg) const _GLIBCXX_NOEXCEPT
{ return !operator==(__arg); }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
OpenPOWER on IntegriCloud