This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: armv4l bootstrap problem in libstdc++-v3
- To: stewart at nexus dot carleton dot ca
- Subject: Re: armv4l bootstrap problem in libstdc++-v3
- From: Mark Mitchell <mark at codesourcery dot com>
- Date: Wed, 10 Jan 2001 16:06:30 -0800
- Cc: nickc at redhat dot com, rearnsha at arm dot com, bkoz at redhat dot com, jason at redhat dot com, stewart at netwinder dot org, gcc-bugs at gcc dot gnu dot org, libstdc++ at gcc dot gnu dot org
- Organization: CodeSourcery, LLC
- References: <20010110110014Z.mitchell@codesourcery.com><Pine.LNX.4.21.0101101355360.26994-100000@nexus.carleton.ca>
Although Jason's original conjecture about the source of this bug was
wrong, he was right that the problem he thought existed did!
Here's a patch for the one spot I found by visual inspection.
Tested on i686-pc-linux-gnu.
--
Mark Mitchell mark@codesourcery.com
CodeSourcery, LLC http://www.codesourcery.com
2001-01-10 Mark Mitchell <mark@codesourcery.com>
* cp-tree.h (TREE_PARMLIST): Use TREE_LANG_FLAG_2, not
TREE_UNSIGNED.
* pt.c (tsubst): Don't clobber TREE_PARMLIST on hashed lists.
Index: cp/cp-tree.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/cp-tree.h,v
retrieving revision 1.558
diff -c -p -r1.558 cp-tree.h
*** cp-tree.h 2001/01/09 10:54:00 1.558
--- cp-tree.h 2001/01/10 23:53:45
*************** Boston, MA 02111-1307, USA. */
*** 61,66 ****
--- 61,67 ----
ICS_THIS_FLAG (in _CONV)
BINDING_HAS_LEVEL_P (in CPLUS_BINDING)
BINFO_OVERRIDE_ALONG_VIRTUAL_PATH_P (in BINFO)
+ TREE_PARMLIST (in TREE_LIST)
3: TYPE_USES_VIRTUAL_BASECLASSES (in a class TYPE).
BINFO_VTABLE_PATH_MARKED.
BINFO_PUSHDECLS_MARKED.
*************** struct lang_type
*** 1760,1766 ****
/* Nonzero for TREE_LIST node means that this list of things
is a list of parameters, as opposed to a list of expressions. */
! #define TREE_PARMLIST(NODE) ((NODE)->common.unsigned_flag) /* overloaded! */
/* Nonzero for a parmlist means that this parmlist ended in ... */
#define PARMLIST_ELLIPSIS_P(NODE) TREE_LANG_FLAG_0 (NODE)
--- 1761,1767 ----
/* Nonzero for TREE_LIST node means that this list of things
is a list of parameters, as opposed to a list of expressions. */
! #define TREE_PARMLIST(NODE) (TREE_LANG_FLAG_2 (NODE))
/* Nonzero for a parmlist means that this parmlist ended in ... */
#define PARMLIST_ELLIPSIS_P(NODE) TREE_LANG_FLAG_0 (NODE)
Index: cp/pt.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/pt.c,v
retrieving revision 1.499
diff -c -p -r1.499 pt.c
*** pt.c 2001/01/08 14:41:01 1.499
--- pt.c 2001/01/10 23:53:51
*************** tsubst (t, args, complain, in_decl)
*** 6449,6456 ****
&& value == TREE_VALUE (t)
&& chain == TREE_CHAIN (t))
return t;
! result = hash_tree_cons (purpose, value, chain);
! TREE_PARMLIST (result) = TREE_PARMLIST (t);
return result;
}
case TREE_VEC:
--- 6449,6461 ----
&& value == TREE_VALUE (t)
&& chain == TREE_CHAIN (t))
return t;
! if (TREE_PARMLIST (t))
! {
! result = tree_cons (purpose, value, chain);
! TREE_PARMLIST (result) = 1;
! }
! else
! result = hash_tree_cons (purpose, value, chain);
return result;
}
case TREE_VEC: