]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/cp/name-lookup.c
PR c++/65046
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 19 Mar 2015 19:31:48 +0000 (19:31 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 19 Mar 2015 19:31:48 +0000 (19:31 +0000)
commit527cb890236ba086bd262d3bc6dbe9d5f51f7145
tree1366bd2f145ea6b0f0e6fc74fb3092fea4a40db4
parent1443772f3685beada7aae669875933cb3e8edcde
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
17 files changed:
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/cp/cp-tree.h
gcc/cp/mangle.c
gcc/cp/name-lookup.c
gcc/cp/parser.c
gcc/cp/tree.c
gcc/doc/extend.texi
gcc/doc/invoke.texi
gcc/testsuite/g++.dg/abi/abi-tag1.C
gcc/testsuite/g++.dg/abi/abi-tag14.C [new file with mode: 0644]
gcc/testsuite/g++.dg/abi/abi-tag4.C
gcc/testsuite/g++.dg/abi/abi-tag8.C
libstdc++-v3/ChangeLog
libstdc++-v3/config/locale/gnu/messages_members.cc
libstdc++-v3/include/bits/c++config
libstdc++-v3/src/c++11/cxx11-shim_facets.cc