* cg_dfn.c: Include "libiberty.h"
authorIan Lance Taylor <ian@airs.com>
Sun, 13 Jun 1999 19:38:06 +0000 (19:38 +0000)
committerIan Lance Taylor <ian@airs.com>
Sun, 13 Jun 1999 19:38:06 +0000 (19:38 +0000)
(DFN_INCR_DEPTH): Define instead of DFN_DEPTH.
(dfn_stack): Define as pointer rather than array.
(pre_visit): Reallocate dfn_stack as needed.

gprof/ChangeLog
gprof/cg_dfn.c

index 24626c2d098528f16afc20306e27bcf683587eae..91ddafd5a2b5bc53d72979b07b2148ea2bd0e729 100644 (file)
@@ -1,3 +1,10 @@
+1999-06-13  Ian Lance Taylor  <ian@zembu.com>
+
+       * cg_dfn.c: Include "libiberty.h"
+       (DFN_INCR_DEPTH): Define instead of DFN_DEPTH.
+       (dfn_stack): Define as pointer rather than array.
+       (pre_visit): Reallocate dfn_stack as needed.
+
 1999-04-26  Tom Tromey  <tromey@cygnus.com>
 
        * aclocal.m4, configure: Updated for new version of libtool.
index c9e37ab29e526adfc0b87f13e4fcd108b7e3fbfe..02d64e7388865c82bb0c53f87eab2a71596a2742 100644 (file)
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
 #include <stdio.h>
+#include "libiberty.h"
 #include "gprof.h"
 #include "cg_arcs.h"
 #include "cg_dfn.h"
 #include "symtab.h"
 #include "utils.h"
 
-#define        DFN_DEPTH       100
+#define        DFN_INCR_DEPTH (128)
 
 typedef struct
   {
@@ -32,7 +33,8 @@ typedef struct
   }
 DFN_Stack;
 
-DFN_Stack dfn_stack[DFN_DEPTH];
+DFN_Stack *dfn_stack = NULL;
+int dfn_maxdepth = 0;
 int dfn_depth = 0;
 int dfn_counter = DFN_NAN;
 
@@ -194,11 +196,13 @@ static void
 DEFUN (pre_visit, (parent), Sym * parent)
 {
   ++dfn_depth;
-  if (dfn_depth >= DFN_DEPTH)
+
+  if (dfn_depth >= dfn_maxdepth)
     {
-      fprintf (stderr, "[pre_visit] dfn_stack overflow\n");
-      done (1);
+      dfn_maxdepth += DFN_INCR_DEPTH;
+      dfn_stack = xrealloc (dfn_stack, dfn_maxdepth * sizeof *dfn_stack);
     }
+
   dfn_stack[dfn_depth].sym = parent;
   dfn_stack[dfn_depth].cycle_top = dfn_depth;
   parent->cg.top_order = DFN_BUSY;