aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/tree.c
diff options
context:
space:
mode:
authorPatrick Palka <ppalka@gcc.gnu.org>2016-04-13 00:06:51 +0000
committerPatrick Palka <ppalka@gcc.gnu.org>2016-04-13 00:06:51 +0000
commit92886d3e86cb7b2f83cfc9724cb527ab8032aed8 (patch)
tree2c6544cbcec2e437adb45867ccd31332d79effc8 /gcc/cp/tree.c
parentd90936ff88545c9312a0137725a9b1ab0919ad48 (diff)
downloadgcc-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.c8
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))