re PR c++/45588 (unused-but-set-variable false trigger building gold)

PR c++/45588
	* pt.c (tsubst) <case INTEGER_TYPE>: Call mark_rvalue_use
	before calling fold_decl_constant_value.

	* g++.dg/warn/Wunused-var-15.C: New test.

From-SVN: r164051
This commit is contained in:
Jakub Jelinek 2010-09-09 08:50:56 +02:00 committed by Jakub Jelinek
parent c8a27c4018
commit e8e399c334
4 changed files with 41 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2010-09-08 Jakub Jelinek <jakub@redhat.com>
PR c++/45588
* pt.c (tsubst) <case INTEGER_TYPE>: Call mark_rvalue_use
before calling fold_decl_constant_value.
2010-09-07 Arnaud Charlet <charlet@adacore.com>
* cp-tree.h (build_enumerator): Add new location_t parameter.

View File

@ -10116,6 +10116,7 @@ tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl)
&& !TREE_TYPE (max))
TREE_TYPE (max) = TREE_TYPE (TREE_OPERAND (max, 0));
max = mark_rvalue_use (max);
max = fold_decl_constant_value (max);
/* If we're in a partial instantiation, preserve the magic NOP_EXPR

View File

@ -1,3 +1,8 @@
2010-09-08 Jakub Jelinek <jakub@redhat.com>
PR c++/45588
* g++.dg/warn/Wunused-var-15.C: New test.
2010-09-08 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* c-c++-common/Wunused-var-12.c: Add -fno-common to options on 32-bit

View File

@ -0,0 +1,29 @@
// PR c++/45588
// { dg-do compile }
// { dg-options "-Wunused" }
void bar (unsigned char *);
template <int N>
struct S
{
static const int k = 6;
};
template <int N>
const int S<N>::k;
template <int N>
void
foo ()
{
const int i = S<N>::k;
unsigned char a[i];
bar (a);
}
void
baz ()
{
foo<0> ();
}