aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-09-19 06:39:10 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-09-19 06:39:10 -0700
commit9790cefdd45a78f21a77f9ff0e7170fe3732b8a5 (patch)
tree923b7f25e39f6b01258cfeb1721e12e7bd3e602e
parent8e5a0fcb7520eb7a21aab9c6b06bf488d4314698 (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/stmt.c23
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
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;