Commit 75d980ab by Jason Merrill Committed by Jason Merrill

error.c (dump_expr): Print conversion between reference and pointer to the same type as "*" or "&".

	* error.c (dump_expr) [CASE_CONVERT]: Print conversion between
	reference and pointer to the same type as "*" or "&".

From-SVN: r164597
parent 32990d5b
2010-09-24 Jason Merrill <jason@redhat.com>
* error.c (dump_expr) [CASE_CONVERT]: Print conversion between
reference and pointer to the same type as "*" or "&".
2010-09-24 Nicola Pero <nicola.pero@meta-innovation.com>
* typeck.c (warn_args_num): Use warning 'too many arguments to
......
......@@ -1949,8 +1949,21 @@ dump_expr (tree t, int flags)
case VIEW_CONVERT_EXPR:
{
tree op = TREE_OPERAND (t, 0);
if (!same_type_p (TREE_TYPE (op), TREE_TYPE (t)))
tree ttype = TREE_TYPE (t);
tree optype = TREE_TYPE (op);
if (TREE_CODE (ttype) != TREE_CODE (optype)
&& POINTER_TYPE_P (ttype)
&& POINTER_TYPE_P (optype)
&& same_type_p (TREE_TYPE (optype),
TREE_TYPE (ttype)))
{
if (TREE_CODE (ttype) == REFERENCE_TYPE)
dump_unary_op ("*", t, flags);
else
dump_unary_op ("&", t, flags);
}
else if (!same_type_p (TREE_TYPE (op), TREE_TYPE (t)))
{
/* It is a cast, but we cannot tell whether it is a
reinterpret or static cast. Use the C style notation. */
......
2010-09-24 Jason Merrill <jason@redhat.com>
* g++.dg/other/error10.C: Adjust expected output.
2010-09-24 Jakub Jelinek <jakub@redhat.com>
PR middle-end/45234
......
......@@ -6,7 +6,7 @@ template<int> struct A {};
template<int N>
void foo(const A<N> &a)
{ -A<N>(a); } // { dg-error "\\(\\(const A<0>\\*\\)a\\)" "" }
{ -A<N>(a); } // { dg-error "\\(\\* & a\\)" "" }
void bar()
{
......
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