------- Comment #7 from pinskia at gcc dot gnu dot org  2006-05-21 00:30 -------
And here is the patch which fixes this (it was very simple to figure out what
was going wrong):
I don't have time to regression test it.

[kudzu:trunk/gcc/cp] pinskia% svn diff rtti.c 
Index: rtti.c
===================================================================
--- rtti.c      (revision 113936)
+++ rtti.c      (working copy)
@@ -677,9 +677,12 @@ build_dynamic_cast_1 (tree type, tree ex
          if (tc == REFERENCE_TYPE)
            {
              tree bad = throw_bad_cast ();
+             tree neq;

              result = save_expr (result);
-             return build3 (COND_EXPR, type, result, result, bad);
+             neq = build2 (NE_EXPR, boolean_type_node, result,
+                           cp_convert (TREE_TYPE (result),
integer_zero_node));
+             return build3 (COND_EXPR, type, neq, result, bad);
            }

          /* Now back to the type we want from a void*.  */


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27592

Reply via email to