aboutsummaryrefslogtreecommitdiff
path: root/gcc/stmt.c
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2003-08-16 13:32:11 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2003-08-16 13:32:11 +0000
commite895113a67a061c20fbb16be60c2d90eb6ba084a (patch)
tree0432e7399477735a910c874de61c6edf041c4dbe /gcc/stmt.c
parente767b5be438a67c59f8f23b6214fcbb7183a8092 (diff)
downloadgcc-e895113a67a061c20fbb16be60c2d90eb6ba084a.zip
gcc-e895113a67a061c20fbb16be60c2d90eb6ba084a.tar.gz
gcc-e895113a67a061c20fbb16be60c2d90eb6ba084a.tar.bz2
re PR c++/11512 (Spurious warning for comma-operator in templates)
PR c++/11512 * stmt.c (expand_expr_stmt_value): Don't warn about any void typed expression. cp: PR c++/11512 * cvt.c (convert_to_void): Indicate which side of conditional has no effects, and rhs of comma operator. Test for no sideeffect expressions here and always build a convert expr. * init.c (expand_default_init): Convert the init to void. * typeck.c (build_x_compound_expr): Do not check for side effects here. (build_compound_expr): Do not convert lhs when building a template. testsuite: PR C++/11512 * g++.dg/template/warn1.C: New. From-SVN: r70505
Diffstat (limited to 'gcc/stmt.c')
-rw-r--r--gcc/stmt.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 8166187..defbb70 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -2152,17 +2152,13 @@ expand_expr_stmt_value (tree exp, int want_value, int maybe_last)
except for last statement in ({...}) where they may be useful. */
if (! want_value
&& (expr_stmts_for_value == 0 || ! maybe_last)
- && exp != error_mark_node)
+ && exp != error_mark_node
+ && warn_unused_value)
{
- if (! TREE_SIDE_EFFECTS (exp))
- {
- if (warn_unused_value
- && !(TREE_CODE (exp) == CONVERT_EXPR
- && VOID_TYPE_P (TREE_TYPE (exp))))
- warning ("%Hstatement with no effect", &emit_locus);
- }
- else if (warn_unused_value)
+ if (TREE_SIDE_EFFECTS (exp))
warn_if_unused_value (exp);
+ else if (!VOID_TYPE_P (TREE_TYPE (exp)))
+ warning ("%Hstatement with no effect", &emit_locus);
}
/* If EXP is of function type and we are expanding statements for