re PR c++/54122 (segfault comparing enum class in lambda inside constructor of a templated class)

PR c++/54122
	* tree.c (lvalue_kind) [INDIRECT_REF]: Don't check for
	METHOD_TYPE.

From-SVN: r195806
This commit is contained in:
Jason Merrill 2013-02-06 08:42:06 -05:00 committed by Jason Merrill
parent 155664b33d
commit 5099f36b1a
3 changed files with 18 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2013-02-05 Jason Merrill <jason@redhat.com>
PR c++/54122
* tree.c (lvalue_kind) [INDIRECT_REF]: Don't check for
METHOD_TYPE.
2013-02-01 Jakub Jelinek <jakub@redhat.com>
Backported from mainline

View File

@ -143,9 +143,7 @@ lvalue_kind (const_tree ref)
case ARRAY_REF:
case PARM_DECL:
case RESULT_DECL:
if (TREE_CODE (TREE_TYPE (ref)) != METHOD_TYPE)
return clk_ordinary;
break;
return clk_ordinary;
/* A scope ref in a template, left as SCOPE_REF to support later
access checking. */

View File

@ -0,0 +1,11 @@
// PR c++/54122
// { dg-options -std=c++11 }
enum E { F };
template <typename A>
struct C
{
E e;
void f () { auto l = [&](void)->void { if (e == F) return; }; }
};