https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65046
--- Comment #3 from Jason Merrill <jason at gcc dot gnu.org> --- Author: jason Date: Thu Mar 19 19:31:48 2015 New Revision: 221521 URL: https://gcc.gnu.org/viewcvs?rev=221521&root=gcc&view=rev Log: 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. Added: trunk/gcc/testsuite/g++.dg/abi/abi-tag14.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/class.c trunk/gcc/cp/cp-tree.h trunk/gcc/cp/mangle.c trunk/gcc/cp/name-lookup.c trunk/gcc/cp/parser.c trunk/gcc/cp/tree.c trunk/gcc/doc/extend.texi trunk/gcc/doc/invoke.texi trunk/gcc/testsuite/g++.dg/abi/abi-tag1.C trunk/gcc/testsuite/g++.dg/abi/abi-tag4.C trunk/gcc/testsuite/g++.dg/abi/abi-tag8.C trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/config/locale/gnu/messages_members.cc trunk/libstdc++-v3/include/bits/c++config trunk/libstdc++-v3/src/c++11/cxx11-shim_facets.cc