aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2016-05-23 20:50:10 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2016-05-23 20:50:10 +0000
commit26d6ae55d88dddc2f2f99d9ac7bf11935307b4ec (patch)
tree0b372cc8356ef8c62ff86c557de938fa92ebfe15 /gcc/cp
parent447caf82a46a3f14ef475897791d11051f2f100c (diff)
downloadgcc-26d6ae55d88dddc2f2f99d9ac7bf11935307b4ec.zip
gcc-26d6ae55d88dddc2f2f99d9ac7bf11935307b4ec.tar.gz
gcc-26d6ae55d88dddc2f2f99d9ac7bf11935307b4ec.tar.bz2
re PR c++/70972 (Inheriting constructors taking parameters by value should move them, not copy)
/cp 2016-05-23 Paolo Carlini <paolo.carlini@oracle.com> PR c++/70972 * method.c (forward_parm): Use cp_build_reference_type. /testsuite 2016-05-23 Paolo Carlini <paolo.carlini@oracle.com> PR c++/70972 * g++.dg/cpp0x/inh-ctor20.C: New. * g++.dg/cpp0x/inh-ctor21.C: Likewise. From-SVN: r236614
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/method.c2
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 764754d..6201bda 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,10 @@
2016-05-23 Paolo Carlini <paolo.carlini@oracle.com>
+ PR c++/70972
+ * method.c (forward_parm): Use cp_build_reference_type.
+
+2016-05-23 Paolo Carlini <paolo.carlini@oracle.com>
+
PR c++/69095
* parser.c (cp_parser_initializer): Use check_for_bare_parameter_packs.
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index 310e7eb..cd8faaf 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -484,6 +484,8 @@ forward_parm (tree parm)
tree type = TREE_TYPE (parm);
if (DECL_PACK_P (parm))
type = PACK_EXPANSION_PATTERN (type);
+ if (TREE_CODE (type) != REFERENCE_TYPE)
+ type = cp_build_reference_type (type, /*rval=*/true);
exp = build_static_cast (type, exp, tf_warning_or_error);
if (DECL_PACK_P (parm))
exp = make_pack_expansion (exp);