* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158224
138bc75d-0d04-0410-961f-
82ee72b054a4
+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
&& warn_unused_value)
emit_side_effect_warnings (loc, expr);
- exprv = expr;
- while (TREE_CODE (exprv) == COMPOUND_EXPR)
- exprv = TREE_OPERAND (exprv, 1);
- if (DECL_P (exprv) || handled_component_p (exprv))
- mark_exp_read (exprv);
+ 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);
}
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.
--- /dev/null
+/* { 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;
+}