re PR c/51294 (spurious warning from -Wconversion in C and C++ in conditional expressions)
2012-11-07 Manuel López-Ibáñez <manu@gcc.gnu.org> PR c/51294 c-family/ * c-common.c (conversion_warning): Handle conditional expressions. testsuite/ * c-c++-common/pr51294.c: New. From-SVN: r193301
This commit is contained in:
parent
dc2d3c67bc
commit
3f46d6a577
4 changed files with 27 additions and 16 deletions
|
@ -1,3 +1,8 @@
|
|||
2012-11-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
|
||||
|
||||
PR c/51294
|
||||
* c-common.c (conversion_warning): Handle conditional expressions.
|
||||
|
||||
2012-10-29 Jonathan Wakely <jwakely.gcc@gmail.com>
|
||||
|
||||
PR c++/54930
|
||||
|
|
|
@ -2670,22 +2670,14 @@ conversion_warning (tree type, tree expr)
|
|||
|
||||
case COND_EXPR:
|
||||
{
|
||||
/* In case of COND_EXPR, if both operands are constants or
|
||||
COND_EXPR, then we do not care about the type of COND_EXPR,
|
||||
only about the conversion of each operand. */
|
||||
tree op1 = TREE_OPERAND (expr, 1);
|
||||
tree op2 = TREE_OPERAND (expr, 2);
|
||||
|
||||
if ((TREE_CODE (op1) == REAL_CST || TREE_CODE (op1) == INTEGER_CST
|
||||
|| TREE_CODE (op1) == COND_EXPR)
|
||||
&& (TREE_CODE (op2) == REAL_CST || TREE_CODE (op2) == INTEGER_CST
|
||||
|| TREE_CODE (op2) == COND_EXPR))
|
||||
{
|
||||
conversion_warning (type, op1);
|
||||
conversion_warning (type, op2);
|
||||
return;
|
||||
}
|
||||
/* Fall through. */
|
||||
/* In case of COND_EXPR, we do not care about the type of
|
||||
COND_EXPR, only about the conversion of each operand. */
|
||||
tree op1 = TREE_OPERAND (expr, 1);
|
||||
tree op2 = TREE_OPERAND (expr, 2);
|
||||
|
||||
conversion_warning (type, op1);
|
||||
conversion_warning (type, op2);
|
||||
return;
|
||||
}
|
||||
|
||||
default: /* 'expr' is not a constant. */
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2012-11-07 Manuel López-Ibáñez <manu@gcc.gnu.org>
|
||||
|
||||
PR c/51294
|
||||
* c-c++-common/pr51294.c: New.
|
||||
|
||||
2012-11-07 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
PR tree-optimization/53787
|
||||
|
|
9
gcc/testsuite/c-c++-common/pr51294.c
Normal file
9
gcc/testsuite/c-c++-common/pr51294.c
Normal file
|
@ -0,0 +1,9 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wconversion -Wsign-conversion" } */
|
||||
|
||||
void foo(int haveBar, char bar_)
|
||||
{
|
||||
char zuul = haveBar?bar_:0;
|
||||
char zuul2 = haveBar?bar_:bar_;
|
||||
char zuul3 = haveBar?0:bar_;
|
||||
}
|
Loading…
Add table
Reference in a new issue