diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9c6d309f87d..6067ee54f62 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-11-05 Paolo Carlini + + PR c++/58724 + * doc/extend.texi [visibility ("visibility_type")]: Add example + about visibility attribute on namespace declaration. + 2013-11-05 Richard Biener PR ipa/58492 @@ -27,7 +33,7 @@ 2013-11-05 Andrew MacLeod - * tree-outof-ssa.c (queue_phi_copy_p): Combine phi_ssa_name_p from + * tree-outof-ssa.c (queue_phi_copy_p): Combine phi_ssa_name_p from gimple.h and the rest of the condition in eliminate_build. (eliminate_build): Call new routine. * gimple.h (phi_ssa_name_p): Delete. diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e6613901c0d..fb9e0c68269 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2013-11-05 Paolo Carlini + + PR c++/58724 + * name-lookup.c (handle_namespace_attrs): Use get_attribute_name. + 2013-11-05 Tobias Burnus * parser.c (cp_parser_omp_for, cp_parser_omp_parallel, diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 025a03cd9fa..ced596e310a 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -3571,7 +3571,7 @@ handle_namespace_attrs (tree ns, tree attributes) for (d = attributes; d; d = TREE_CHAIN (d)) { - tree name = TREE_PURPOSE (d); + tree name = get_attribute_name (d); tree args = TREE_VALUE (d); if (is_attribute_p ("visibility", name)) diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 799ede1ec95..0d72819b1b0 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -4275,6 +4275,12 @@ the One Definition Rule; for example, it is usually not useful to mark an inline method as hidden without marking the whole class as hidden. A C++ namespace declaration can also have the visibility attribute. + +@smallexample +namespace nspace1 __attribute__ ((visibility ("protected"))) +@{ /* @r{Do something.} */; @} +@end smallexample + This attribute applies only to the particular namespace body, not to other definitions of the same namespace; it is equivalent to using @samp{#pragma GCC visibility} before and after the namespace diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6a7f3d1a7d0..61461633e59 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-11-05 Paolo Carlini + + PR c++/58724 + * g++.dg/cpp0x/gen-attrs-56.C: New. + 2013-11-05 Richard Biener PR ipa/58492 diff --git a/gcc/testsuite/g++.dg/cpp0x/gen-attrs-56.C b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-56.C new file mode 100644 index 00000000000..f331ed369ac --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-56.C @@ -0,0 +1,5 @@ +// PR c++/58724 +// { dg-do compile { target c++11 } } + +namespace foo __attribute__((visibility("default"))) {} +namespace bar [[gnu::visibility("default")]] {}