commit ebb0d2ecbf7717afcb45f52ab7d7a0d68ae2157b
Author: Jason Merrill <jason@redhat.com>
Date: Tue Dec 11 16:34:24 2012 -0500
PR c++/54883
* decl2.c (min_vis_r): Handle anon visibility for enums.
@@ -1926,16 +1926,15 @@ min_vis_r (tree *tp, int *walk_subtrees, void *data)
{
*walk_subtrees = 0;
}
- else if (CLASS_TYPE_P (*tp))
+ else if (TAGGED_TYPE_P (*tp)
+ && !TREE_PUBLIC (TYPE_MAIN_DECL (*tp)))
{
- if (!TREE_PUBLIC (TYPE_MAIN_DECL (*tp)))
- {
- *vis_p = VISIBILITY_ANON;
- return *tp;
- }
- else if (CLASSTYPE_VISIBILITY (*tp) > *vis_p)
- *vis_p = CLASSTYPE_VISIBILITY (*tp);
+ *vis_p = VISIBILITY_ANON;
+ return *tp;
}
+ else if (CLASS_TYPE_P (*tp)
+ && CLASSTYPE_VISIBILITY (*tp) > *vis_p)
+ *vis_p = CLASSTYPE_VISIBILITY (*tp);
return NULL;
}
new file mode 100644
@@ -0,0 +1,5 @@
+// PR c++/54883
+
+namespace { enum E { E1 }; } void f(E e) { }
+
+// { dg-final { scan-assembler-not "globl" } }