* stabsread.c (read_type): Save a reference to types that are defined
authorJoel Brobecker <brobecker@gnat.com>
Fri, 5 Dec 2003 00:45:39 +0000 (00:45 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Fri, 5 Dec 2003 00:45:39 +0000 (00:45 +0000)
        as cross references to other types.

gdb/ChangeLog
gdb/stabsread.c

index 8480ae2388422305a32bb202c44757a0465ce79b..b61514e5305de6e761cf63829fd6f80707c80b0d 100644 (file)
@@ -1,3 +1,8 @@
+2003-12-04  J. Brobecker  <brobecker@gnat.com>
+
+       * stabsread.c (read_type): Save a reference to types that are defined
+       as cross references to other types.
+
 2003-12-02  Roland McGrath  <roland@redhat.com>
 
        * thread-db.c (enable_thread_event): Change return type to
index 14b4b45eeb0da0d50da31e0260a2efb06c242f9e..2567b468ffe783e93f9e0936cf256c7c66c84d4a 100644 (file)
@@ -1564,11 +1564,9 @@ again:
          *pp = from + 1;
        }
 
-       /* Now check to see whether the type has already been
-          declared.  This was written for arrays of cross-referenced
-          types before we had TYPE_CODE_TARGET_STUBBED, so I'm pretty
-          sure it is not necessary anymore.  But it might be a good
-          idea, to save a little memory.  */
+        /* If this type has already been declared, then reuse the same
+           type, rather than allocating a new one.  This saves some
+           memory.  */
 
        for (ppt = file_symbols; ppt; ppt = ppt->next)
          for (i = 0; i < ppt->nsyms; i++)
@@ -1582,6 +1580,8 @@ again:
                {
                  obstack_free (&objfile->type_obstack, type_name);
                  type = SYMBOL_TYPE (sym);
+                 if (typenums[0] != -1)
+                   *dbx_lookup_type (typenums) = type;
                  return type;
                }
            }