This is the mail archive of the gcc@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]

Re: Bootstrap failure in libstdc++-v3 on GNU/Linux x86


Ranjit Mathew wrote:

Eric Botcazou wrote:


This doesn't make sense because the member function in question reads:

inline long double&
complex<long double>::real()
{ return __real__ _M_value; }                   // line 1296

And _M_value does have type __complex__ long double. Should I start a
binary search, or is this known to be some kind of recent breakage?


Could be Mark's latest patch to the parser.



AFAICT, yes - I was able to proceed with the bootstrap once I reverted:

http://gcc.gnu.org/ml/gcc-patches/2004-06/msg02268.html

(on i686-pc-linux-gnu)


I've checked in yet another fix here, and tests are running -- but I did get past building V3.

2004-06-28 Mark Mitchell <mark@codesourcery.com>


* parser.c (cp_parser_set_decl_spec_type): Fix thinko.



-- Mark Mitchell CodeSourcery, LLC (916) 791-8304 mark@codesourcery.com

Index: parser.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/parser.c,v
retrieving revision 1.219
diff -c -5 -p -r1.219 parser.c
*** parser.c	27 Jun 2004 18:56:46 -0000	1.219
--- parser.c	28 Jun 2004 07:38:37 -0000
*************** cp_parser_set_decl_spec_type (cp_decl_sp
*** 15437,15453 ****
        && (decl_specs->type
  	  || decl_specs->specs[(int) ds_long]
  	  || decl_specs->specs[(int) ds_short]
  	  || decl_specs->specs[(int) ds_unsigned]
  	  || decl_specs->specs[(int) ds_signed]))
!     decl_specs->redefined_builtin_type = type_spec;
    else if (decl_specs->type)
      decl_specs->multiple_types_p = true;
    else
      {
        decl_specs->type = type_spec;
        decl_specs->user_defined_type_p = user_defined_p;
      }
  }
  
  /* DECL_SPECIFIERS is the representation of a decl-specifier-seq.
     Returns TRUE iff `friend' appears among the DECL_SPECIFIERS.  */
--- 15437,15461 ----
        && (decl_specs->type
  	  || decl_specs->specs[(int) ds_long]
  	  || decl_specs->specs[(int) ds_short]
  	  || decl_specs->specs[(int) ds_unsigned]
  	  || decl_specs->specs[(int) ds_signed]))
!     {
!       decl_specs->redefined_builtin_type = type_spec;
!       if (!decl_specs->type)
! 	{
! 	  decl_specs->type = type_spec;
! 	  decl_specs->user_defined_type_p = false;
! 	}
!     }
    else if (decl_specs->type)
      decl_specs->multiple_types_p = true;
    else
      {
        decl_specs->type = type_spec;
        decl_specs->user_defined_type_p = user_defined_p;
+       decl_specs->redefined_builtin_type = NULL_TREE;
      }
  }
  
  /* DECL_SPECIFIERS is the representation of a decl-specifier-seq.
     Returns TRUE iff `friend' appears among the DECL_SPECIFIERS.  */

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