diff options
author | Richard Henderson <rth@cygnus.com> | 2000-09-19 06:39:10 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2000-09-19 06:39:10 -0700 |
commit | 9790cefdd45a78f21a77f9ff0e7170fe3732b8a5 (patch) | |
tree | 923b7f25e39f6b01258cfeb1721e12e7bd3e602e | |
parent | 8e5a0fcb7520eb7a21aab9c6b06bf488d4314698 (diff) | |
download | gcc-9790cefdd45a78f21a77f9ff0e7170fe3732b8a5.zip gcc-9790cefdd45a78f21a77f9ff0e7170fe3732b8a5.tar.gz gcc-9790cefdd45a78f21a77f9ff0e7170fe3732b8a5.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | 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 <rth@cygnus.com> + * 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 @@ -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; |