aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2010-06-04 20:42:42 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2010-06-04 20:42:42 +0200
commit16c821230be0a70133754e1101b5b053f48bbb69 (patch)
tree26596117c2d7cb1fd741bf199a5856a892f747f4
parent7d1f0f8a52db86fa860f131d32d23f1e72ecc93d (diff)
downloadgcc-16c821230be0a70133754e1101b5b053f48bbb69.zip
gcc-16c821230be0a70133754e1101b5b053f48bbb69.tar.gz
gcc-16c821230be0a70133754e1101b5b053f48bbb69.tar.bz2
re PR c++/44362 (Bogus set-but-not-used warning)
PR c++/44362 * call.c (build_conditional_expr): If both arg2 and arg3 are lvalues with the same type, call mark_lvalue_use on both. * c-c++-common/Wunused-var-10.c: New test. Co-Authored-By: Jason Merrill <jason@redhat.com> From-SVN: r160289
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/call.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/c-c++-common/Wunused-var-10.c68
4 files changed, 82 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index b2f6cd1..b949f5a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+2010-06-04 Jakub Jelinek <jakub@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/44362
+ * call.c (build_conditional_expr): If both arg2 and arg3 are lvalues
+ with the same type, call mark_lvalue_use on both.
+
2010-06-03 Nathan Froyd <froydnj@codesourcery.com>
* class.c (struct vtbl_init_data_s): Remove last_init field.
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index b9f1c7f..60cc4f2 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -3839,6 +3839,8 @@ build_conditional_expr (tree arg1, tree arg2, tree arg3,
&& same_type_p (arg2_type, arg3_type))
{
result_type = arg2_type;
+ mark_lvalue_use (arg2);
+ mark_lvalue_use (arg3);
goto valid_operands;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 617ae60..dd4b2c2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-06-04 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/44362
+ * c-c++-common/Wunused-var-10.c: New test.
+
2010-06-04 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR c/25880
diff --git a/gcc/testsuite/c-c++-common/Wunused-var-10.c b/gcc/testsuite/c-c++-common/Wunused-var-10.c
new file mode 100644
index 0000000..16d5171
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/Wunused-var-10.c
@@ -0,0 +1,68 @@
+/* PR c++/44362 */
+/* { dg-options "-Wunused" } */
+/* { dg-do compile } */
+
+int
+f1 (int u, int v)
+{
+ int a, b, c, d, e, f, g, h, i;
+ a = u;
+ b = v;
+ c = u;
+ d = v;
+ e = u;
+ f = v;
+ g = u == 6 ? a : b;
+ h = 0 ? c : d;
+ i = 1 ? e : f;
+ return g + h + i;
+}
+
+int
+f2 (int u, int v)
+{
+ int a, b, c, d, e, f, g, h, i;
+ a = u;
+ b = v;
+ c = u;
+ d = v;
+ e = u;
+ f = v;
+ g = u == 6 ? a + 1 : b;
+ h = 0 ? c + 1 : d;
+ i = 1 ? e + 1 : f;
+ return g + h + i;
+}
+
+int
+f3 (int u, int v)
+{
+ int a, b, c, d, e, f, g, h, i;
+ a = u;
+ b = v;
+ c = u;
+ d = v;
+ e = u;
+ f = v;
+ g = u == 6 ? a : b + 1;
+ h = 0 ? c : d + 1;
+ i = 1 ? e : f + 1;
+ return g + h + i;
+}
+
+int
+f4 (int u, int v)
+{
+ int a, c, e, g, h, i;
+ long b, d, f;
+ a = u;
+ b = v;
+ c = u;
+ d = v;
+ e = u;
+ f = v;
+ g = u == 6 ? a : b;
+ h = 0 ? c : d;
+ i = 1 ? e : f;
+ return g + h + i;
+}