re PR bootstrap/43699 ("variable set but not used" error during bootstrap)
PR bootstrap/43699 * c-typeck.c (c_process_expr_stmt): Call mark_exp_read even for exprs satisfying handled_component_p. * gcc.dg/Wunused-var-7.c: New test. From-SVN: r158224
This commit is contained in:
parent
f101882ada
commit
fa8351f8d8
4 changed files with 41 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2010-04-12 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR bootstrap/43699
|
||||
* c-typeck.c (c_process_expr_stmt): Call mark_exp_read even
|
||||
for exprs satisfying handled_component_p.
|
||||
|
||||
2010-04-12 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* expr.c (categorize_ctor_elements_1): Properly count sub-elements of
|
||||
|
|
|
@ -8826,11 +8826,13 @@ c_process_expr_stmt (location_t loc, tree expr)
|
|||
&& warn_unused_value)
|
||||
emit_side_effect_warnings (loc, expr);
|
||||
|
||||
if (DECL_P (expr) || handled_component_p (expr))
|
||||
mark_exp_read (expr);
|
||||
|
||||
/* If the expression is not of a type to which we cannot assign a line
|
||||
number, wrap the thing in a no-op NOP_EXPR. */
|
||||
if (DECL_P (expr) || CONSTANT_CLASS_P (expr))
|
||||
{
|
||||
mark_exp_read (expr);
|
||||
expr = build1 (NOP_EXPR, TREE_TYPE (expr), expr);
|
||||
SET_EXPR_LOCATION (expr, loc);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
2010-04-12 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR bootstrap/43699
|
||||
* gcc.dg/Wunused-var-7.c: New test.
|
||||
|
||||
PR tree-optimization/43560
|
||||
* gcc.c-torture/execute/pr43560.c: New test.
|
||||
|
||||
|
|
29
gcc/testsuite/gcc.dg/Wunused-var-7.c
Normal file
29
gcc/testsuite/gcc.dg/Wunused-var-7.c
Normal file
|
@ -0,0 +1,29 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wunused -W" } */
|
||||
|
||||
int
|
||||
f1 (unsigned int x)
|
||||
{
|
||||
int c = ({ union { unsigned int a; int b; } u; u.a = x; u.b; });
|
||||
return c;
|
||||
}
|
||||
|
||||
void
|
||||
f2 (void)
|
||||
{
|
||||
struct S { int i; } a;
|
||||
int b[1];
|
||||
a.i = 1;
|
||||
a.i; /* { dg-warning "with no effect" } */
|
||||
b[0] = 1;
|
||||
b[0]; /* { dg-warning "with no effect" } */
|
||||
}
|
||||
|
||||
void
|
||||
f3 (void)
|
||||
{
|
||||
struct S { int i; } a; /* { dg-warning "set but not used" } */
|
||||
int b[1]; /* { dg-warning "set but not used" } */
|
||||
a.i = 1;
|
||||
b[0] = 1;
|
||||
}
|
Loading…
Add table
Reference in a new issue