This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/14587] [3.4/3.5 Regression] Multiple inheriance/DLL testcase (g++.dg/ext/dllexport-MI1.C) failures
- From: "jason at redhat dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 22 Mar 2004 16:41:01 -0000
- Subject: [Bug c++/14587] [3.4/3.5 Regression] Multiple inheriance/DLL testcase (g++.dg/ext/dllexport-MI1.C) failures
- References: <20040315201425.14587.dannysmith@gcc.gnu.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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