2013-11-05 Paolo Carlini <paolo.carlini@oracle.com>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Nov 2013 15:22:36 +0000 (15:22 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Nov 2013 15:22:36 +0000 (15:22 +0000)
PR c++/58724
* doc/extend.texi [visibility ("visibility_type")]: Add example
about visibility attribute on namespace declaration.

/cp
2013-11-05  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/58724
* name-lookup.c (handle_namespace_attrs): Use get_attribute_name.

/testsuite
2013-11-05  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/58724
* g++.dg/cpp0x/gen-attrs-56.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@204401 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/name-lookup.c
gcc/doc/extend.texi
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/gen-attrs-56.C [new file with mode: 0644]

index 9c6d309..6067ee5 100644 (file)
@@ -1,3 +1,9 @@
+2013-11-05  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/58724
+       * doc/extend.texi [visibility ("visibility_type")]: Add example
+       about visibility attribute on namespace declaration.
+
 2013-11-05  Richard Biener  <rguenther@suse.de>
 
        PR ipa/58492
@@ -27,7 +33,7 @@
 
 2013-11-05  Andrew MacLeod  <amacleod@redhat.com>
 
-       * 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.
index e661390..fb9e0c6 100644 (file)
@@ -1,3 +1,8 @@
+2013-11-05  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/58724
+       * name-lookup.c (handle_namespace_attrs): Use get_attribute_name.
+
 2013-11-05  Tobias Burnus  <burnus@net-b.de>
 
        * parser.c (cp_parser_omp_for, cp_parser_omp_parallel,
index 025a03c..ced596e 100644 (file)
@@ -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))
index 799ede1..0d72819 100644 (file)
@@ -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
index 6a7f3d1..6146163 100644 (file)
@@ -1,3 +1,8 @@
+2013-11-05  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/58724
+       * g++.dg/cpp0x/gen-attrs-56.C: New.
+
 2013-11-05  Richard Biener  <rguenther@suse.de>
 
        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 (file)
index 0000000..f331ed3
--- /dev/null
@@ -0,0 +1,5 @@
+// PR c++/58724
+// { dg-do compile { target c++11 } }
+
+namespace foo __attribute__((visibility("default"))) {}
+namespace bar [[gnu::visibility("default")]] {}