From: paolo Date: Wed, 30 Nov 2011 18:31:30 +0000 (+0000) Subject: /cp X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=339ad7cae01bd4b97e7cea7afecce3c4e811c3e0 /cp 2011-11-30 Paolo Carlini PR c++/51299 * rtti.c (ifnonnull): Use nullptr_node. (build_dynamic_cast_1): Call cp_truthvalue_conversion instead of c_common_truthvalue_conversion. /testsuite 2011-11-30 Paolo Carlini PR c++/51299 * g++.dg/warn/Wzero-as-null-pointer-constant-4.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181854 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0772ee9715c..42573eff39d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2011-11-30 Paolo Carlini + + PR c++/51299 + * rtti.c (ifnonnull): Use nullptr_node. + (build_dynamic_cast_1): Call cp_truthvalue_conversion instead + of c_common_truthvalue_conversion. + 2011-11-24 Paolo Carlini PR c++/51227 diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c index 818b8d0eee4..4494fddc03e 100644 --- a/gcc/cp/rtti.c +++ b/gcc/cp/rtti.c @@ -503,8 +503,8 @@ ifnonnull (tree test, tree result) { return build3 (COND_EXPR, TREE_TYPE (result), build2 (EQ_EXPR, boolean_type_node, test, - cp_convert (TREE_TYPE (test), integer_zero_node)), - cp_convert (TREE_TYPE (result), integer_zero_node), + cp_convert (TREE_TYPE (test), nullptr_node)), + cp_convert (TREE_TYPE (result), nullptr_node), result); } @@ -747,7 +747,7 @@ build_dynamic_cast_1 (tree type, tree expr, tsubst_flags_t complain) tree neq; result = save_expr (result); - neq = c_common_truthvalue_conversion (input_location, result); + neq = cp_truthvalue_conversion (result); return cp_convert (type, build3 (COND_EXPR, TREE_TYPE (result), neq, result, bad)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3d695a22031..fb13fb53c21 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-11-30 Paolo Carlini + + PR c++/51299 + * g++.dg/warn/Wzero-as-null-pointer-constant-4.C: New. + 2011-11-29 Jakub Jelinek PR tree-optimization/51247 diff --git a/gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-4.C b/gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-4.C new file mode 100644 index 00000000000..548caac36e9 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-4.C @@ -0,0 +1,22 @@ +// PR c++/51299 +// { dg-options "-Wzero-as-null-pointer-constant" } + +class Base +{ + public: + virtual ~Base(); +}; + +class Derived : public Base +{ +}; + +void foo(Base* b) +{ + Derived* d = dynamic_cast(b); +} + +void bar(Base& b) +{ + Derived& d = dynamic_cast(b); +}