OSDN Git Service

* cvt.c (ocp_convert): Avoid infinite recursion caused by
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Oct 1998 10:32:01 +0000 (10:32 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Oct 1998 10:32:01 +0000 (10:32 +0000)
1998-10-03 change.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22958 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/cvt.c

index 7ef415c..b781ad1 100644 (file)
@@ -1,3 +1,8 @@
+1998-10-09  Mark Mitchell  <mark@markmitchell.com>
+
+       * cvt.c (ocp_convert): Avoid infinite recursion caused by
+       1998-10-03 change.
+
 1998-10-08  Jason Merrill  <jason@yorick.cygnus.com>
 
        * pt.c (resolve_overloaded_unification): New fn.
index f2b41d8..50c4fc5 100644 (file)
@@ -679,12 +679,12 @@ ocp_convert (type, expr, convtype, flags)
        /* The call to fold will not always remove the NOP_EXPR as
           might be expected, since if one of the types is a typedef;
           the comparsion in fold is just equality of pointers, not a
-          call to comptypes.  */
-       ;
+          call to comptypes.  We don't call fold in this case because
+          that can result in infinite recursion; fold will call
+          convert, which will call ocp_convert, etc.  */
+       return e;
       else
-       e = build1 (NOP_EXPR, type, e);
-
-      return fold (e);
+       return fold (build1 (NOP_EXPR, type, e));
     }
 
   if (code == VOID_TYPE && (convtype & CONV_STATIC))