This is the mail archive of the gcc-patches@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: i386-coff nightly testing libstdc++ build failure


	This was caused by a change of Mark's, to put template instantiation
	information for enums in TYPE_BINFO.  It's probably reasonable to restrict
	TYPE_BINFO to AGGREGATE_TYPE_P types; what do you think?

I checked in this patch to fix the problem.

Fri Sep 25 14:18:33 1998  Jim Wilson  <wilson@cygnus.com>

	* sdbout.c (sdbout_one_type): Don't look at TYPE_BINFO field of enums.

Index: sdbout.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gcc/sdbout.c,v
retrieving revision 1.65
diff -p -r1.65 sdbout.c
*** sdbout.c	1998/08/19 22:22:58	1.65
--- sdbout.c	1998/09/25 21:18:08
*************** sdbout_one_type (type)
*** 1198,1231 ****
  
  	/* Print out the base class information with fields
  	   named after the types they hold.  */
! 	if (TYPE_BINFO (type)
! 	    && TYPE_BINFO_BASETYPES (type))
! 	  n_baseclasses = TREE_VEC_LENGTH (TYPE_BINFO_BASETYPES (type));
! 	for (i = 0; i < n_baseclasses; i++)
  	  {
! 	    tree child = TREE_VEC_ELT (BINFO_BASETYPES (TYPE_BINFO (type)), i);
! 	    tree child_type = BINFO_TYPE (child);
! 	    tree child_type_name;
! 	    if (TYPE_NAME (child_type) == 0)
! 	      continue;
! 	    if (TREE_CODE (TYPE_NAME (child_type)) == IDENTIFIER_NODE)
! 	      child_type_name = TYPE_NAME (child_type);
! 	    else if (TREE_CODE (TYPE_NAME (child_type)) == TYPE_DECL)
  	      {
! 		child_type_name = DECL_NAME (TYPE_NAME (child_type));
! 		if (child_type_name && template_name_p (child_type_name))
! 		  child_type_name
! 		    = DECL_ASSEMBLER_NAME (TYPE_NAME (child_type));
! 	      }
! 	    else
! 	      continue;
  
! 	    CONTIN;
! 	    PUT_SDB_DEF (IDENTIFIER_POINTER (child_type_name));
! 	    PUT_SDB_INT_VAL (TREE_INT_CST_LOW (BINFO_OFFSET (child)));
! 	    PUT_SDB_SCL (member_scl);
! 	    sdbout_type (BINFO_TYPE (child));
! 	    PUT_SDB_ENDEF;
  	  }
  
  	/* output the individual fields */
--- 1198,1238 ----
  
  	/* Print out the base class information with fields
  	   named after the types they hold.  */
! 	/* This is only relevent to aggregate types.  TYPE_BINFO is used
! 	   for other purposes in an ENUMERAL_TYPE, so we must exclude that
! 	   case.  */
! 	if (TREE_CODE (type) != ENUMERAL_TYPE)
  	  {
! 	    if (TYPE_BINFO (type)
! 		&& TYPE_BINFO_BASETYPES (type))
! 	      n_baseclasses = TREE_VEC_LENGTH (TYPE_BINFO_BASETYPES (type));
! 	    for (i = 0; i < n_baseclasses; i++)
  	      {
! 		tree child = TREE_VEC_ELT (BINFO_BASETYPES (TYPE_BINFO (type)),
! 					   i);
! 		tree child_type = BINFO_TYPE (child);
! 		tree child_type_name;
! 		if (TYPE_NAME (child_type) == 0)
! 		  continue;
! 		if (TREE_CODE (TYPE_NAME (child_type)) == IDENTIFIER_NODE)
! 		  child_type_name = TYPE_NAME (child_type);
! 		else if (TREE_CODE (TYPE_NAME (child_type)) == TYPE_DECL)
! 		  {
! 		    child_type_name = DECL_NAME (TYPE_NAME (child_type));
! 		    if (child_type_name && template_name_p (child_type_name))
! 		      child_type_name
! 			= DECL_ASSEMBLER_NAME (TYPE_NAME (child_type));
! 		  }
! 		else
! 		  continue;
  
! 		CONTIN;
! 		PUT_SDB_DEF (IDENTIFIER_POINTER (child_type_name));
! 		PUT_SDB_INT_VAL (TREE_INT_CST_LOW (BINFO_OFFSET (child)));
! 		PUT_SDB_SCL (member_scl);
! 		sdbout_type (BINFO_TYPE (child));
! 		PUT_SDB_ENDEF;
! 	      }
  	  }
  
  	/* output the individual fields */


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