Commit 2303a079 by Mark Mitchell Committed by Mark Mitchell

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
parent f9dd72da
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
* method.c (do_build_assign_ref): Use cp_build_qualified_type, not
build_qualified_type.
......
......@@ -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);
......
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.
......
class a {} a1;
template <a & p> class b { public: b() { static_cast <a &> (p); }; };
int main() { b <a1> b1; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment