PR c++/85545 - ICE with noexcept PMF conversion.

* cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.

From-SVN: r259689
This commit is contained in:
Jason Merrill 2018-04-26 16:32:32 -04:00 committed by Jason Merrill
parent e94497fbc0
commit 128d29a52f
3 changed files with 22 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2018-04-26 Jason Merrill <jason@redhat.com>
PR c++/85545 - ICE with noexcept PMF conversion.
* cvt.c (cp_fold_convert): Handle PMF CONSTRUCTORs directly.
2018-04-25 Nathan Sidwell <nathan@acm.org> 2018-04-25 Nathan Sidwell <nathan@acm.org>
PR c++/85437 PR c++/85437

View File

@ -601,7 +601,9 @@ cp_fold_convert (tree type, tree expr)
tree conv; tree conv;
if (TREE_TYPE (expr) == type) if (TREE_TYPE (expr) == type)
conv = expr; conv = expr;
else if (TREE_CODE (expr) == PTRMEM_CST) else if (TREE_CODE (expr) == PTRMEM_CST
|| (TREE_CODE (expr) == CONSTRUCTOR
&& TYPE_PTRMEMFUNC_P (type)))
{ {
/* Avoid wrapping a PTRMEM_CST in NOP_EXPR. */ /* Avoid wrapping a PTRMEM_CST in NOP_EXPR. */
conv = copy_node (expr); conv = copy_node (expr);

View File

@ -0,0 +1,14 @@
// PR c++/85545
// { dg-do compile { target c++11 } }
struct A
{
void foo() noexcept;
};
template<typename T> void bar(T);
void baz()
{
bar(static_cast<void(A::*)()>(&A::foo));
}