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
This commit is contained in:
Le-Chun Wu 2009-04-20 21:13:08 +00:00
parent 6e0f0975e5
commit 311fa510e6
4 changed files with 27 additions and 1 deletions

View File

@ -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.

View File

@ -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;

View File

@ -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.

View File

@ -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;
}