From 9790cefdd45a78f21a77f9ff0e7170fe3732b8a5 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Tue, 19 Sep 2000 06:39:10 -0700 Subject: stmt.c (expand_expr_stmt): Only call warn_if_unused_value if the tree has side effects. * stmt.c (expand_expr_stmt): Only call warn_if_unused_value if the tree has side effects. (warn_if_unused_value): Do not warn about void constructs. From-SVN: r36532 --- gcc/ChangeLog | 4 ++++ gcc/stmt.c | 23 ++++++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 79da6a3..e74d3c7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2000-09-19 Richard Henderson + * stmt.c (expand_expr_stmt): Only call warn_if_unused_value + if the tree has side effects. + (warn_if_unused_value): Do not warn about void constructs. + * c-decl.c (poplevel): Invoke warn_about_unused_variables. * unroll.c (copy_loop_body): Update LABEL_NUSES before diff --git a/gcc/stmt.c b/gcc/stmt.c index 11a7132..2892d34 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -1908,12 +1908,14 @@ expand_expr_stmt (exp) except inside a ({...}) where they may be useful. */ if (expr_stmts_for_value == 0 && exp != error_mark_node) { - if (! TREE_SIDE_EFFECTS (exp) - && (extra_warnings || warn_unused_value) - && !(TREE_CODE (exp) == CONVERT_EXPR - && VOID_TYPE_P (TREE_TYPE (exp)))) - warning_with_file_and_line (emit_filename, emit_lineno, - "statement with no effect"); + if (! TREE_SIDE_EFFECTS (exp)) + { + if ((extra_warnings || warn_unused_value) + && !(TREE_CODE (exp) == CONVERT_EXPR + && VOID_TYPE_P (TREE_TYPE (exp)))) + warning_with_file_and_line (emit_filename, emit_lineno, + "statement with no effect"); + } else if (warn_unused_value) warn_if_unused_value (exp); } @@ -1978,6 +1980,12 @@ warn_if_unused_value (exp) if (TREE_USED (exp)) return 0; + /* Don't warn about void constructs. This includes casting to void, + void function calls, and statement expressions with a final cast + to void. */ + if (VOID_TYPE_P (TREE_TYPE (exp))) + return 0; + switch (TREE_CODE (exp)) { case PREINCREMENT_EXPR: @@ -2023,9 +2031,6 @@ warn_if_unused_value (exp) case NOP_EXPR: case CONVERT_EXPR: case NON_LVALUE_EXPR: - /* Don't warn about values cast to void. */ - if (VOID_TYPE_P (TREE_TYPE (exp))) - return 0; /* Don't warn about conversions not explicit in the user's program. */ if (TREE_NO_UNUSED_WARNING (exp)) return 0; -- cgit v1.1