re PR c++/52718 (-Wzero-as-null-pointer-constant: misleading location for 0 as default argument)

/cp
2012-03-29  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/52718
	* decl.c (check_default_argument): With -Wzero-as-null-pointer-constant
	warn for a zero as null pointer constant default argument.

/testsuite
2012-03-29  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/52718
	* g++.dg/warn/Wzero-as-null-pointer-constant-5.C: New.

From-SVN: r185984
This commit is contained in:
Paolo Carlini 2012-03-29 23:21:02 +00:00 committed by Paolo Carlini
parent aa9488f6c3
commit 73dbd1bcbc
4 changed files with 42 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2012-03-29 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/52718
* decl.c (check_default_argument): With -Wzero-as-null-pointer-constant
warn for a zero as null pointer constant default argument.
2012-03-29 Jason Merrill <jason@redhat.com>
PR c++/52685

View File

@ -10576,6 +10576,17 @@ check_default_argument (tree decl, tree arg)
return error_mark_node;
}
if (warn_zero_as_null_pointer_constant
&& c_inhibit_evaluation_warnings == 0
&& (POINTER_TYPE_P (decl_type) || TYPE_PTR_TO_MEMBER_P (decl_type))
&& null_ptr_cst_p (arg)
&& !NULLPTR_TYPE_P (TREE_TYPE (arg)))
{
warning (OPT_Wzero_as_null_pointer_constant,
"zero as null pointer constant");
return nullptr_node;
}
/* [dcl.fct.default]
Local variables shall not be used in default argument

View File

@ -1,3 +1,8 @@
2012-03-29 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/52718
* g++.dg/warn/Wzero-as-null-pointer-constant-5.C: New.
2012-03-29 Jason Merrill <jason@redhat.com>
PR c++/52685

View File

@ -0,0 +1,20 @@
// PR c++/52718
// { dg-options "-Wzero-as-null-pointer-constant" }
struct foo
{
foo(void* a = 0) {}; // { dg-warning "zero as null pointer" }
};
void* fun(void* a = 0) {}; // { dg-warning "zero as null pointer" }
struct bar: foo
{
bar() {};
};
struct baz
{
baz(const foo& f1 = foo(),
void* f2 = fun()) {};
};