diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2003-08-16 13:32:11 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2003-08-16 13:32:11 +0000 |
commit | e895113a67a061c20fbb16be60c2d90eb6ba084a (patch) | |
tree | 0432e7399477735a910c874de61c6edf041c4dbe /gcc/stmt.c | |
parent | e767b5be438a67c59f8f23b6214fcbb7183a8092 (diff) | |
download | gcc-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.c | 14 |
1 files changed, 5 insertions, 9 deletions
@@ -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 |