aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2015-03-19 19:31:48 +0000
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2015-03-19 19:31:48 +0000
commit527cb890236ba086bd262d3bc6dbe9d5f51f7145 (patch)
tree1366bd2f145ea6b0f0e6fc74fb3092fea4a40db4 /libstdc++-v3
parent1443772f3685beada7aae669875933cb3e8edcde (diff)
PR c++/65046
Automatically propagate ABI tags to variables and functions from their (return) type. * class.c (check_tag): Handle variables and functions. (mark_or_check_attr_tags): Split out from find_abi_tags_r. (mark_or_check_tags): Likewise. (mark_abi_tags): Use it. Rename from mark_type_abi_tags. (check_abi_tags): Add single argument overload for decls. Handle inheriting tags for decls. * mangle.c (write_mangled_name): Call it. (mangle_return_type_p): Split out from write_encoding. (unmangled_name_p): Split out from write_mangled_name. (write_mangled_name): Ignore abi_tag on namespace. * cp-tree.h (NAMESPACE_IS_INLINE): Replace NAMESPACE_ABI_TAG. * parser.c (cp_parser_namespace_definition): Set it. * name-lookup.c (handle_namespace_attrs): Use arguments. Warn about abi_tag attribute on non-inline namespace. * tree.c (check_abi_tag_args): Split out from handle_abi_tag_attribute. (handle_abi_tag_attribute): Allow tags on variables. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221521 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/config/locale/gnu/messages_members.cc7
-rw-r--r--libstdc++-v3/include/bits/c++config2
-rw-r--r--libstdc++-v3/src/c++11/cxx11-shim_facets.cc21
4 files changed, 16 insertions, 19 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 4fe0c645687..6836423e7d1 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-19 Jason Merrill <jason@redhat.com>
+
+ * config/locale/gnu/messages_members.cc: Revert abi-tag change.
+ * src/c++11/cxx11-shim_facets.cc: Revert abi-tag change.
+
2015-03-18 Jonathan Wakely <jwakely@redhat.com>
PR c++/65046
diff --git a/libstdc++-v3/config/locale/gnu/messages_members.cc b/libstdc++-v3/config/locale/gnu/messages_members.cc
index c90499e26a9..2e6122d2ea5 100644
--- a/libstdc++-v3/config/locale/gnu/messages_members.cc
+++ b/libstdc++-v3/config/locale/gnu/messages_members.cc
@@ -46,8 +46,8 @@ namespace
typedef messages_base::catalog catalog;
- struct _GLIBCXX_DEFAULT_ABI_TAG Catalog_info
- {
+ struct Catalog_info
+ {
Catalog_info(catalog __id, const string& __domain, locale __loc)
: _M_id(__id), _M_domain(__domain), _M_locale(__loc)
{ }
@@ -57,7 +57,7 @@ namespace
locale _M_locale;
};
- class _GLIBCXX_DEFAULT_ABI_TAG Catalogs
+ class Catalogs
{
public:
Catalogs() : _M_catalog_counter(0) { }
@@ -133,7 +133,6 @@ namespace
std::vector<Catalog_info*> _M_infos;
};
- _GLIBCXX_DEFAULT_ABI_TAG
Catalogs&
get_catalogs()
{
diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index 46ffa1f5d0a..eebe34c604c 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -215,7 +215,7 @@ namespace std
#if _GLIBCXX_USE_CXX11_ABI
namespace std
{
- inline namespace __cxx11 __attribute__((__abi_tag__)) { }
+ inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { }
}
# define _GLIBCXX_NAMESPACE_CXX11 __cxx11::
# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 {
diff --git a/libstdc++-v3/src/c++11/cxx11-shim_facets.cc b/libstdc++-v3/src/c++11/cxx11-shim_facets.cc
index a32b9f0b65f..4e30088bac3 100644
--- a/libstdc++-v3/src/c++11/cxx11-shim_facets.cc
+++ b/libstdc++-v3/src/c++11/cxx11-shim_facets.cc
@@ -227,8 +227,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
namespace // unnamed
{
template<typename _CharT>
- struct _GLIBCXX_DEFAULT_ABI_TAG numpunct_shim
- : std::numpunct<_CharT>, facet::__shim
+ struct numpunct_shim : std::numpunct<_CharT>, facet::__shim
{
typedef typename numpunct<_CharT>::__cache_type __cache_type;
@@ -252,8 +251,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
};
template<typename _CharT>
- struct _GLIBCXX_DEFAULT_ABI_TAG collate_shim
- : std::collate<_CharT>, facet::__shim
+ struct collate_shim : std::collate<_CharT>, facet::__shim
{
typedef basic_string<_CharT> string_type;
@@ -278,8 +276,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
};
template<typename _CharT>
- struct _GLIBCXX_DEFAULT_ABI_TAG time_get_shim
- : std::time_get<_CharT>, facet::__shim
+ struct time_get_shim : std::time_get<_CharT>, facet::__shim
{
typedef typename std::time_get<_CharT>::iter_type iter_type;
typedef typename std::time_get<_CharT>::char_type char_type;
@@ -333,8 +330,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
};
template<typename _CharT, bool _Intl>
- struct _GLIBCXX_DEFAULT_ABI_TAG moneypunct_shim
- : std::moneypunct<_CharT, _Intl>, facet::__shim
+ struct moneypunct_shim : std::moneypunct<_CharT, _Intl>, facet::__shim
{
typedef typename moneypunct<_CharT, _Intl>::__cache_type __cache_type;
@@ -361,8 +357,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
};
template<typename _CharT>
- struct _GLIBCXX_DEFAULT_ABI_TAG money_get_shim
- : std::money_get<_CharT>, facet::__shim
+ struct money_get_shim : std::money_get<_CharT>, facet::__shim
{
typedef typename std::money_get<_CharT>::iter_type iter_type;
typedef typename std::money_get<_CharT>::char_type char_type;
@@ -403,8 +398,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
};
template<typename _CharT>
- struct _GLIBCXX_DEFAULT_ABI_TAG money_put_shim
- : std::money_put<_CharT>, facet::__shim
+ struct money_put_shim : std::money_put<_CharT>, facet::__shim
{
typedef typename std::money_put<_CharT>::iter_type iter_type;
typedef typename std::money_put<_CharT>::char_type char_type;
@@ -433,8 +427,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
};
template<typename _CharT>
- struct _GLIBCXX_DEFAULT_ABI_TAG messages_shim
- : std::messages<_CharT>, facet::__shim
+ struct messages_shim : std::messages<_CharT>, facet::__shim
{
typedef messages_base::catalog catalog;
typedef basic_string<_CharT> string_type;