aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorLe-Chun Wu <lcwu@gcc.gnu.org>2009-04-20 21:13:08 +0000
committerLe-Chun Wu <lcwu@gcc.gnu.org>2009-04-20 21:13:08 +0000
commit311fa510e6d737db7727ab6f4bd1c5598f2b217c (patch)
tree7d0125e6f6b8ac5da38604c980e416aa7193ee02 /gcc
parent6e0f0975e5368803451b2642fb4ecc598310a2e4 (diff)
downloadgcc-311fa510e6d737db7727ab6f4bd1c5598f2b217c.zip
gcc-311fa510e6d737db7727ab6f4bd1c5598f2b217c.tar.gz
gcc-311fa510e6d737db7727ab6f4bd1c5598f2b217c.tar.bz2
re PR c++/39803 (Bogus 'unused value' warning on declarations of non-POD arrays)
PR c++/39803 * gcc/cp/init.c (build_vec_init): Set TREE_NO_WARNING on the compiler-generated INDIRECT_REF expression. * gcc/testsuite/g++.dg/warn/Wunused-14.C: New test. From-SVN: r146454
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog8
-rw-r--r--gcc/cp/init.c1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/warn/Wunused-14.C14
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 0d014f5..15f83d9 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2009-04-20 Le-Chun Wu <lcwu@google.com>
+
+ PR c++/39803
+ * init.c (build_vec_init): Set TREE_NO_WARNING on the
+ compiler-generated INDIRECT_REF expression.
+
2009-04-20 Ian Lance Taylor <iant@google.com>
* typeck.c (build_function_call_vec): New function.
@@ -34,7 +40,7 @@
* cp-tree.h (enum tsubst_flags): Rename from enum tsubst_flags_t.
(tsubst_flags_t): Change typedef from enum type to int.
-2009-04-16 Le-Chun Wu <lcwu@google.com>
+2009-04-16 Paolo Bonzini <bonzini@gnu.org>
* decl.c (check_initializer): Use TYPE_VECTOR_OPAQUE
instead of targetm.vector_opaque_p.
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index 812042d..d40a5e7 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -2920,6 +2920,7 @@ build_vec_init (tree base, tree maxindex, tree init,
atype = build_pointer_type (atype);
stmt_expr = build1 (NOP_EXPR, atype, stmt_expr);
stmt_expr = cp_build_indirect_ref (stmt_expr, NULL, complain);
+ TREE_NO_WARNING (stmt_expr) = 1;
}
current_stmt_tree ()->stmts_are_full_exprs_p = destroy_temps;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 478e893..c589673 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2009-04-20 Le-Chun Wu <lcwu@google.com>
+
+ PR c++/39803
+ * g++.dg/warn/Wunused-14.C: New test.
+
2009-04-20 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/specs/small_alignment.ads: New test.
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-14.C b/gcc/testsuite/g++.dg/warn/Wunused-14.C
new file mode 100644
index 0000000..b325ccb7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wunused-14.C
@@ -0,0 +1,14 @@
+// Test that -Wunused should not emit a warning on the initialization of
+// non-POD arrays. See PR c++/39803.
+// { dg-do compile }
+// { dg-options "-Wunused" }
+
+#include <utility>
+
+using std::pair;
+
+int foo() {
+ pair<int, const char*> components[3]; // { dg-bogus "value computed is not used" }
+ components[0].first = 0;
+ return 0;
+}