Commit e5e691a5 by Paolo Carlini Committed by Paolo Carlini

re PR c++/71440 (ICE on invalid C++ code in instantiate_type, at cp/class.c:8247)

/cp
2017-08-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71440
	* typeck.c (build_x_unary_op): Avoid pretty-printing constructor /
	destructor as expressions.

/testsuite
2017-08-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71440
	* g++.dg/template/crash127.C: New.

From-SVN: r250848
parent 0a734553
2017-08-03 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/71440
* typeck.c (build_x_unary_op): Avoid pretty-printing constructor /
destructor as expressions.
2017-08-02 Jakub Jelinek <jakub@redhat.com> 2017-08-02 Jakub Jelinek <jakub@redhat.com>
PR c++/81640 PR c++/81640
......
...@@ -5487,9 +5487,9 @@ build_x_unary_op (location_t loc, enum tree_code code, cp_expr xarg, ...@@ -5487,9 +5487,9 @@ build_x_unary_op (location_t loc, enum tree_code code, cp_expr xarg,
{ {
if (complain & tf_error) if (complain & tf_error)
error (DECL_CONSTRUCTOR_P (fn) error (DECL_CONSTRUCTOR_P (fn)
? G_("taking address of constructor %qE") ? G_("taking address of constructor %qD")
: G_("taking address of destructor %qE"), : G_("taking address of destructor %qD"),
xarg.get_value ()); fn);
return error_mark_node; return error_mark_node;
} }
} }
......
2017-08-03 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/71440
* g++.dg/template/crash127.C: New.
2017-08-03 Jakub Jelinek <jakub@redhat.com> 2017-08-03 Jakub Jelinek <jakub@redhat.com>
PR middle-end/81052 PR middle-end/81052
......
// PR c++/71440
struct A
{
void f () {}
};
typedef void (A::*Ptr) ();
template < Ptr > struct B {};
template < class T >
struct C : public A
{
void bar ()
{
B < &A::A > b; // { dg-error "taking address of constructor 'A::A" "" { target c++98_only } }
// { dg-error "taking address of constructor 'constexpr A::A" "" { target c++11 } .-1 }
}
};
template class C < int >;
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