* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148950
138bc75d-0d04-0410-961f-
82ee72b054a4
2009-06-25 Ian Lance Taylor <iant@google.com>
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".
* parser.c (cp_parser_binary_expression): Increment
c_inhibit_evaluation_warnings while parsing the right hand side of
"true || x" or "false && x".
/* The two parts of a cond expr might be separate lvalues. */
tree op1 = TREE_OPERAND (expr,1);
tree op2 = TREE_OPERAND (expr,2);
/* 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
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
? "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),
? "third operand of conditional" : NULL), complain);
expr = build3 (COND_EXPR, TREE_TYPE (new_op1),
2009-06-25 Ian Lance Taylor <iant@google.com>
2009-06-25 Ian Lance Taylor <iant@google.com>
+ * g++.dg/warn/Wunused-16.C: New testcase.
+
+2009-06-25 Ian Lance Taylor <iant@google.com>
+
* g++.dg/warn/skip-2.C: New testcase.
2009-06-25 Steve Ellcey <sje@cup.hp.com>
* g++.dg/warn/skip-2.C: New testcase.
2009-06-25 Steve Ellcey <sje@cup.hp.com>
--- /dev/null
+// { dg-do compile }
+// { dg-options "-Wunused-value" }
+
+extern void f1();
+void
+f(bool b)
+{
+ b ? f1(), 0 : 0; // { dg-bogus "has no effect" }
+}