From a0c04f8e495477e0bf1c0d8d87f1a32985003533 Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Sun, 4 Jun 2006 18:25:40 +0000 Subject: [PATCH] re PR c++/27592 (dynamic cast failure) 2006-06-01 Andrew Pinski PR c++/27592 * rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion on operand of the COND_EXPR for the null pointer check. From-SVN: r114361 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/rtti.c | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e4186b9d864..0d0c6a59b89 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2006-06-01 Andrew Pinski + + PR c++/27592 + * rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion + on operand of the COND_EXPR for the null pointer check. + 2006-06-01 Andrew Pinski PR c++/26740 diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c index 6242e44c3e9..7a469967132 100644 --- a/gcc/cp/rtti.c +++ b/gcc/cp/rtti.c @@ -677,9 +677,11 @@ build_dynamic_cast_1 (tree type, tree expr) if (tc == REFERENCE_TYPE) { tree bad = throw_bad_cast (); + tree neq; result = save_expr (result); - return build3 (COND_EXPR, type, result, result, bad); + neq = c_common_truthvalue_conversion (result); + return build3 (COND_EXPR, type, neq, result, bad); } /* Now back to the type we want from a void*. */ -- 2.30.2