re PR c++/7478 (internal compiler error on static_cast inside template)

PR c++/7478
	* cvt.c (convert_to_reference): Allow references as the incoming
	type.

	PR c++/7478
	* g++.dg/template/ref1.C: New test.

From-SVN: r58230
This commit is contained in:
Mark Mitchell 2002-10-17 00:17:59 +00:00 committed by Mark Mitchell
parent f9dd72da28
commit 2303a07914
4 changed files with 22 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2002-10-16 Mark Mitchell <mark@codesourcery.com>
PR c++/7478
* cvt.c (convert_to_reference): Allow references as the incoming
type.
2002-10-16 Mark Mitchell <mark@codesourcery.com>
PR c++/7524

View File

@ -473,12 +473,13 @@ convert_to_reference (reftype, expr, convtype, flags, decl)
tree decl;
{
register tree type = TYPE_MAIN_VARIANT (TREE_TYPE (reftype));
register tree intype = TREE_TYPE (expr);
register tree intype;
tree rval = NULL_TREE;
tree rval_as_conversion = NULL_TREE;
int i;
if (TREE_CODE (type) == FUNCTION_TYPE && intype == unknown_type_node)
if (TREE_CODE (type) == FUNCTION_TYPE
&& TREE_TYPE (expr) == unknown_type_node)
{
expr = instantiate_type (type, expr,
(flags & LOOKUP_COMPLAIN)
@ -488,6 +489,11 @@ convert_to_reference (reftype, expr, convtype, flags, decl)
intype = TREE_TYPE (expr);
}
else
{
expr = convert_from_reference (expr);
intype = TREE_TYPE (expr);
}
my_friendly_assert (TREE_CODE (intype) != REFERENCE_TYPE, 364);

View File

@ -1,3 +1,8 @@
2002-10-16 Mark Mitchell <mark@codesourcery.com>
PR c++/7478
* g++.dg/template/ref1.C: New test.
2002-10-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* gcc.c-torture/execute/20020720-1.x: Don't XFAIL for mips.

View File

@ -0,0 +1,3 @@
class a {} a1;
template <a & p> class b { public: b() { static_cast <a &> (p); }; };
int main() { b <a1> b1; };