diff options
author | Ian Lance Taylor <iant@google.com> | 2009-06-25 19:07:49 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2009-06-25 19:07:49 +0000 |
commit | 0dae2d924dac1c080e85b92b1f71031dc67f606a (patch) | |
tree | 6dd494a0b52b156fce06810ff15c4cbbaf141216 /gcc/cp | |
parent | 98f80e918ed957896fe0fd1cf0329aa8d2f68feb (diff) | |
download | gcc-0dae2d924dac1c080e85b92b1f71031dc67f606a.tar.gz |
cvt.c (convert_to_void): Only warn about COND_EXPR if neither the second nor third operand has side effects.
cp/:
* cvt.c (convert_to_void): Only warn about COND_EXPR if neither
the second nor third operand has side effects.
testsuite/:
* g++.dg/warn/Wunused-16.C: New testcase.
From-SVN: r148950
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/cvt.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4e1f61080c5..e651c1d9ddd 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,10 @@ 2009-06-25 Ian Lance Taylor <iant@google.com> + * cvt.c (convert_to_void): Only warn about COND_EXPR if neither + the second nor third operand has side effects. + +2009-06-25 Ian Lance Taylor <iant@google.com> + * parser.c (cp_parser_binary_expression): Increment c_inhibit_evaluation_warnings while parsing the right hand side of "true || x" or "false && x". diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c index dfd0ea81e75..88ae05a0e61 100644 --- a/gcc/cp/cvt.c +++ b/gcc/cp/cvt.c @@ -828,11 +828,12 @@ convert_to_void (tree expr, const char *implicit, tsubst_flags_t complain) /* The two parts of a cond expr might be separate lvalues. */ tree op1 = TREE_OPERAND (expr,1); tree op2 = TREE_OPERAND (expr,2); + bool side_effects = TREE_SIDE_EFFECTS (op1) || TREE_SIDE_EFFECTS (op2); tree new_op1 = convert_to_void - (op1, (implicit && !TREE_SIDE_EFFECTS (op2) + (op1, (implicit && !side_effects ? "second operand of conditional" : NULL), complain); tree new_op2 = convert_to_void - (op2, (implicit && !TREE_SIDE_EFFECTS (op1) + (op2, (implicit && !side_effects ? "third operand of conditional" : NULL), complain); expr = build3 (COND_EXPR, TREE_TYPE (new_op1), |