This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/14587] [3.4/3.5 Regression] Multiple inheriance/DLL testcase (g++.dg/ext/dllexport-MI1.C) failures


------- Additional Comments From jason at redhat dot com  2004-03-22 16:40 -------
Subject: Re:  New: Multiple inheriance/DLL testcase
 (g++.dg/ext/dllexport-MI1.C) failures

Would someone please test this patch under Cygwin?  I sent it to Danny, but
haven't gotten a response.  I would suggest using only the winnt.c patch
for 3.4.

*** attribs.c.~1~	2003-08-21 15:53:55.000000000 -0400
--- attribs.c	2004-03-16 15:17:13.000000000 -0500
*************** decl_attributes (tree *node, tree attrib
*** 294,300 ****
  	      if (DECL_P (*anode))
  		DECL_ATTRIBUTES (*anode) = tree_cons (name, args, old_attrs);
  	      else if (flags & (int) ATTR_FLAG_TYPE_IN_PLACE)
! 		TYPE_ATTRIBUTES (*anode) = tree_cons (name, args, old_attrs);
  	      else
  		*anode = build_type_attribute_variant (*anode,
  						       tree_cons (name, args,
--- 294,317 ----
  	      if (DECL_P (*anode))
  		DECL_ATTRIBUTES (*anode) = tree_cons (name, args, old_attrs);
  	      else if (flags & (int) ATTR_FLAG_TYPE_IN_PLACE)
! 		{
! 		  TYPE_ATTRIBUTES (*anode) = tree_cons (name, args, old_attrs);
! 		  if (*anode == TYPE_MAIN_VARIANT (*anode))
! 		    {
! 		      tree variant;
! 		      for (variant = *anode; variant;
! 			   variant = TYPE_NEXT_VARIANT (variant))
! 			{
! 			  if (TYPE_ATTRIBUTES (variant) == old_attrs)
! 			    TYPE_ATTRIBUTES (variant)
! 			      = TYPE_ATTRIBUTES (*anode);
! 			  else if (!lookup_attribute
! 				   (spec->name, TYPE_ATTRIBUTES (variant)))
! 			    TYPE_ATTRIBUTES (variant) = tree_cons
! 			      (name, args, TYPE_ATTRIBUTES (variant));
! 			}
! 		    }
! 		}
  	      else
  		*anode = build_type_attribute_variant (*anode,
  						       tree_cons (name, args,
*** config/i386/winnt.c.~1~	2004-02-10 18:58:49.000000000 -0500
--- config/i386/winnt.c	2004-03-16 15:19:31.000000000 -0500
*************** associated_type (tree decl)
*** 171,177 ****
  	 dtor's are not affected by class status but virtual and
  	 non-virtual thunks are.  */
        if (!DECL_ARTIFICIAL (decl) || DECL_COMDAT (decl))
! 	t = TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (decl))));
      }
    else if (DECL_CONTEXT (decl)
  	   && TREE_CODE_CLASS (TREE_CODE (DECL_CONTEXT (decl))) == 't')
--- 171,178 ----
  	 dtor's are not affected by class status but virtual and
  	 non-virtual thunks are.  */
        if (!DECL_ARTIFICIAL (decl) || DECL_COMDAT (decl))
! 	t = TYPE_MAIN_VARIANT
! 	  (TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (decl)))));
      }
    else if (DECL_CONTEXT (decl)
  	   && TREE_CODE_CLASS (TREE_CODE (DECL_CONTEXT (decl))) == 't')


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14587


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]