This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
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. */