summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2014-09-22 18:47:16 +0000
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2014-09-22 18:47:16 +0000
commit298025f55ddfa54a6fe0dfecab51acc02484f528 (patch)
tree298c57f97d37a0251ccd2e016993f28dce1af5d2
parent7dce4fad3537ebae948773ff0471e6203316b588 (diff)
downloadppe42-gcc-298025f55ddfa54a6fe0dfecab51acc02484f528.tar.gz
ppe42-gcc-298025f55ddfa54a6fe0dfecab51acc02484f528.zip
PR c++/61465
* call.c (convert_like_real) [ck_identity]: Call mark_rvalue_use after pulling out an element from a CONSTRUCTOR. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_9-branch@215476 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/call.c2
-rw-r--r--gcc/testsuite/g++.dg/warn/Wunused-parm-6.C8
3 files changed, 15 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 799705df38a..241a1307764 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2014-09-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/61465
+ * call.c (convert_like_real) [ck_identity]: Call mark_rvalue_use
+ after pulling out an element from a CONSTRUCTOR.
+
2014-09-18 Jakub Jelinek <jakub@redhat.com>
PR c++/63248
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index cd053f0adfd..709b6be0e3d 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -6078,7 +6078,6 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
return expr;
}
case ck_identity:
- expr = mark_rvalue_use (expr);
if (BRACE_ENCLOSED_INITIALIZER_P (expr))
{
int nelts = CONSTRUCTOR_NELTS (expr);
@@ -6089,6 +6088,7 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
else
gcc_unreachable ();
}
+ expr = mark_rvalue_use (expr);
if (type_unknown_p (expr))
expr = instantiate_type (totype, expr, complain);
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-parm-6.C b/gcc/testsuite/g++.dg/warn/Wunused-parm-6.C
new file mode 100644
index 00000000000..95fb7e2dbe4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wunused-parm-6.C
@@ -0,0 +1,8 @@
+// PR c++/61465
+// { dg-do compile { target c++11 } }
+// { dg-options "-Wunused-but-set-parameter" }
+
+struct Foo {
+ Foo(void* x) : y{static_cast<char*>(x)} {}
+ char* y;
+};
OpenPOWER on IntegriCloud