Author: mm
Date: Sat Jul 30 17:27:29 2011
New Revision: 224523
URL: http://svn.freebsd.org/changeset/base/224523

Log:
  Fix invalid assertion of C++ external static data member declarations
  as anonymous namespaces are local to the current translation.
  
  GCC PR:               c++/33094
  
  Reviewed by:  uqs
  Approved by:  re (kib)
  Obtained from:        gcc (branches/redhat/gcc-4_1-branch, rev. 129554, GPLv2)
  MFC after:    1 week

Modified:
  head/contrib/gcc/cp/ChangeLog
  head/contrib/gcc/cp/decl.c

Modified: head/contrib/gcc/cp/ChangeLog
==============================================================================
--- head/contrib/gcc/cp/ChangeLog       Sat Jul 30 14:13:57 2011        
(r224522)
+++ head/contrib/gcc/cp/ChangeLog       Sat Jul 30 17:27:29 2011        
(r224523)
@@ -1,3 +1,9 @@
+2007-09-29  Jason Merrill  <ja...@redhat.com>
+
+       PR c++/33094
+       * decl.c (make_rtl_for_nonlocal_decl): It's ok for a member
+       constant to not have DECL_EXTERNAL if it's file-local.
+
 2007-08-24  Jakub Jelinek  <ja...@redhat.com>
 
        PR c++/31941

Modified: head/contrib/gcc/cp/decl.c
==============================================================================
--- head/contrib/gcc/cp/decl.c  Sat Jul 30 14:13:57 2011        (r224522)
+++ head/contrib/gcc/cp/decl.c  Sat Jul 30 17:27:29 2011        (r224523)
@@ -4968,7 +4968,7 @@ make_rtl_for_nonlocal_decl (tree decl, t
       /* An in-class declaration of a static data member should be
         external; it is only a declaration, and not a definition.  */
       if (init == NULL_TREE)
-       gcc_assert (DECL_EXTERNAL (decl));
+       gcc_assert (DECL_EXTERNAL (decl) || !TREE_PUBLIC (decl));
     }
 
   /* We don't create any RTL for local variables.  */
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to