re PR c++/65046 (-Wabi-tag doesn't warn about variables or function return types)
authorJason Merrill <jason@redhat.com>
Thu, 19 Mar 2015 19:31:48 +0000 (15:31 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 19 Mar 2015 19:31:48 +0000 (15:31 -0400)
commit7cb73573606d5b0881b0af778a81b5b9c1569f36
tree1366bd2f145ea6b0f0e6fc74fb3092fea4a40db4
parent9b65e171edf31cd83fd075f6ed4f3943ebecc505
re PR c++/65046 (-Wabi-tag doesn't warn about variables or function return types)

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.

From-SVN: r221521
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