Commit 6f94398e by Paolo Carlini Committed by Paolo Carlini

re PR c++/45278 (-Wextra doesn't warn about (pointer < 0 ).)

/cp
2011-09-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/45278
	* typeck.c (cp_build_binary_op): With -Wextra, warn for ordered
	comparison of pointer with zero.

/testsuite
2011-09-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/45278
	* g++.dg/warn/Wextra-3.C: New.

From-SVN: r179321
parent 39f2bcb5
2011-09-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/45278
* typeck.c (cp_build_binary_op): With -Wextra, warn for ordered
comparison of pointer with zero.
2011-09-27 Paolo Carlini <paolo.carlini@oracle.com> 2011-09-27 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/31489 PR c++/31489
......
...@@ -4189,9 +4189,19 @@ cp_build_binary_op (location_t location, ...@@ -4189,9 +4189,19 @@ cp_build_binary_op (location_t location,
result_type = composite_pointer_type (type0, type1, op0, op1, result_type = composite_pointer_type (type0, type1, op0, op1,
CPO_COMPARISON, complain); CPO_COMPARISON, complain);
else if (code0 == POINTER_TYPE && null_ptr_cst_p (op1)) else if (code0 == POINTER_TYPE && null_ptr_cst_p (op1))
result_type = type0; {
result_type = type0;
if (extra_warnings && (complain & tf_warning))
warning (OPT_Wextra,
"ordered comparison of pointer with integer zero");
}
else if (code1 == POINTER_TYPE && null_ptr_cst_p (op0)) else if (code1 == POINTER_TYPE && null_ptr_cst_p (op0))
result_type = type1; {
result_type = type1;
if (extra_warnings && (complain & tf_warning))
warning (OPT_Wextra,
"ordered comparison of pointer with integer zero");
}
else if (null_ptr_cst_p (op0) && null_ptr_cst_p (op1)) else if (null_ptr_cst_p (op0) && null_ptr_cst_p (op1))
/* One of the operands must be of nullptr_t type. */ /* One of the operands must be of nullptr_t type. */
result_type = TREE_TYPE (nullptr_node); result_type = TREE_TYPE (nullptr_node);
......
2011-09-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/45278
* g++.dg/warn/Wextra-3.C: New.
2011-09-28 Oleg Endo <oleg.endo@t-online.de> 2011-09-28 Oleg Endo <oleg.endo@t-online.de>
PR target/49486 PR target/49486
......
// PR c++/45278
// { dg-options "-Wextra" }
extern void* p;
int f1() { return ( p < 0 ? 1 : 0 ); } // { dg-warning "ordered comparison" }
int f2() { return ( p <= 0 ? 1 : 0 ); } // { dg-warning "ordered comparison" }
int f3() { return ( p > 0 ? 1 : 0 ); } // { dg-warning "ordered comparison" }
int f4() { return ( p >= 0 ? 1 : 0 ); } // { dg-warning "ordered comparison" }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment