OSDN Git Service

* decl2.c (is_late_template_attribute): Don't defer attribute
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Jan 2008 19:47:28 +0000 (19:47 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Jan 2008 19:47:28 +0000 (19:47 +0000)
        visibility just because the type is dependent.

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

gcc/cp/ChangeLog
gcc/cp/decl2.c

index 9383ccd..22afe19 100644 (file)
@@ -1,4 +1,9 @@
 2008-01-25  Jason Merrill  <jason@redhat.com>
 2008-01-25  Jason Merrill  <jason@redhat.com>
+
+       * decl2.c (is_late_template_attribute): Don't defer attribute
+       visibility just because the type is dependent.
+
+2008-01-25  Jason Merrill  <jason@redhat.com>
            Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/31780
            Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/31780
index 550d0bc..fa8d28a 100644 (file)
@@ -1014,9 +1014,12 @@ is_late_template_attribute (tree attr, tree decl)
          || code == BOUND_TEMPLATE_TEMPLATE_PARM
          || code == TYPENAME_TYPE)
        return true;
          || code == BOUND_TEMPLATE_TEMPLATE_PARM
          || code == TYPENAME_TYPE)
        return true;
-      /* Also defer attributes on dependent types.  This is not necessary
-        in all cases, but is the better default.  */
-      else if (dependent_type_p (type))
+      /* Also defer most attributes on dependent types.  This is not
+        necessary in all cases, but is the better default.  */
+      else if (dependent_type_p (type)
+              /* But attribute visibility specifically works on
+                 templates.  */
+              && !is_attribute_p ("visibility", name))
        return true;
       else
        return false;
        return true;
       else
        return false;