diff options
author | Patrick Palka <ppalka@gcc.gnu.org> | 2016-04-13 00:06:51 +0000 |
---|---|---|
committer | Patrick Palka <ppalka@gcc.gnu.org> | 2016-04-13 00:06:51 +0000 |
commit | 92886d3e86cb7b2f83cfc9724cb527ab8032aed8 (patch) | |
tree | 2c6544cbcec2e437adb45867ccd31332d79effc8 /gcc/cp/tree.c | |
parent | d90936ff88545c9312a0137725a9b1ab0919ad48 (diff) | |
download | gcc-92886d3e86cb7b2f83cfc9724cb527ab8032aed8.zip gcc-92886d3e86cb7b2f83cfc9724cb527ab8032aed8.tar.gz gcc-92886d3e86cb7b2f83cfc9724cb527ab8032aed8.tar.bz2 |
Fix PR c++/70610 (wrong overload resolution during template processing)
gcc/cp/ChangeLog:
PR c++/70610
* tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Unconditionally
recurse into it.
* typeck.c (build_x_conditional_expr): Unconditionally remember
that the result is an lvalue or xvalue.
gcc/testsuite/ChangeLog:
PR c++/70610
* g++.dg/template/pr70610.C: New test.
* g++.dg/template/pr70610-2.C: New test.
* g++.dg/template/pr70610-3.C: New test.
* g++.dg/template/pr70610-4.C: New test.
From-SVN: r234926
Diffstat (limited to 'gcc/cp/tree.c')
-rw-r--r-- | gcc/cp/tree.c | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 5d9de34..df2981f 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -224,13 +224,7 @@ lvalue_kind (const_tree ref) return lvalue_kind (BASELINK_FUNCTIONS (CONST_CAST_TREE (ref))); case NON_DEPENDENT_EXPR: - /* We just return clk_ordinary for NON_DEPENDENT_EXPR in C++98, but - in C++11 lvalues don't bind to rvalue references, so we need to - work harder to avoid bogus errors (c++/44870). */ - if (cxx_dialect < cxx11) - return clk_ordinary; - else - return lvalue_kind (TREE_OPERAND (ref, 0)); + return lvalue_kind (TREE_OPERAND (ref, 0)); default: if (!TREE_TYPE (ref)) |