aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo@gcc.gnu.org>2013-11-05 15:22:36 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2013-11-05 15:22:36 +0000
commit33b5d6da2aa84c197ae8c02961ddab6e59f644f2 (patch)
tree466135e745930151a8d682369297d991fd462955 /gcc
parent9c39fca1bf518dd6b0642811c2571f4cdf9d02d8 (diff)
downloadgcc-33b5d6da2aa84c197ae8c02961ddab6e59f644f2.zip
gcc-33b5d6da2aa84c197ae8c02961ddab6e59f644f2.tar.gz
gcc-33b5d6da2aa84c197ae8c02961ddab6e59f644f2.tar.bz2
re PR c++/58724 (ICE with attribute [[gnu::visibility("default")]] on namespace)
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. /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. From-SVN: r204401
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/name-lookup.c2
-rw-r--r--gcc/doc/extend.texi6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/gen-attrs-56.C5
6 files changed, 29 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9c6d309..6067ee5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e661390..fb9e0c6 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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,
diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c
index 025a03c..ced596e 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 799ede1..0d72819 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 6a7f3d1..6146163 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..f331ed3
--- /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")]] {}