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]

Re: armv4l bootstrap problem in libstdc++-v3



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:

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