diff options
author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-03-19 19:31:48 +0000 |
---|---|---|
committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-03-19 19:31:48 +0000 |
commit | 527cb890236ba086bd262d3bc6dbe9d5f51f7145 (patch) | |
tree | 1366bd2f145ea6b0f0e6fc74fb3092fea4a40db4 /libstdc++-v3 | |
parent | 1443772f3685beada7aae669875933cb3e8edcde (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/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++-v3/config/locale/gnu/messages_members.cc | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/c++config | 2 | ||||
-rw-r--r-- | libstdc++-v3/src/c++11/cxx11-shim_facets.cc | 21 |
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; |