diff options
author | Jason Merrill <jason@redhat.com> | 2014-06-16 07:45:37 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2014-06-16 07:45:37 -0400 |
commit | 949bd6c8ce34292ed83d80294d609835084947c7 (patch) | |
tree | 6c91b255dc662ea5fa28035e32d737c726d4ba23 /gcc/cp/tree.c | |
parent | 2bd4bfee7e16cf608ae6e16c669e265bce635d48 (diff) | |
download | gcc-949bd6c8ce34292ed83d80294d609835084947c7.tar.gz |
re PR c++/61500 ([C++11] Can't take pointer to member referenced via member pointer template parameter.)
PR c++/61500
* tree.c (lvalue_kind): Handle MEMBER_REF and DOTSTAR_EXPR.
From-SVN: r211703
Diffstat (limited to 'gcc/cp/tree.c')
-rw-r--r-- | gcc/cp/tree.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 587ae80bcc1..36166052d08 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -102,6 +102,16 @@ lvalue_kind (const_tree ref) case IMAGPART_EXPR: return lvalue_kind (TREE_OPERAND (ref, 0)); + case MEMBER_REF: + case DOTSTAR_EXPR: + if (TREE_CODE (ref) == MEMBER_REF) + op1_lvalue_kind = clk_ordinary; + else + op1_lvalue_kind = lvalue_kind (TREE_OPERAND (ref, 0)); + if (TYPE_PTRMEMFUNC_P (TREE_TYPE (TREE_OPERAND (ref, 1)))) + op1_lvalue_kind = clk_none; + return op1_lvalue_kind; + case COMPONENT_REF: op1_lvalue_kind = lvalue_kind (TREE_OPERAND (ref, 0)); /* Look at the member designator. */ |