gengtype.c (new_structure): Append to structures list.
authorJason Merrill <jason@redhat.com>
Thu, 10 Nov 2016 16:49:08 +0000 (11:49 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 10 Nov 2016 16:49:08 +0000 (11:49 -0500)
* gengtype.c (new_structure): Append to structures list.

(find_structure): Likewise.

From-SVN: r242040

gcc/ChangeLog
gcc/gengtype.c

index 1e13f598d6fc544753b93a9138073ebd0ef8b7ba..4a380cbf46053562356601fc62a62a0ba9070a5f 100644 (file)
@@ -1,3 +1,8 @@
+2016-11-10  Jason Merrill  <jason@redhat.com>
+
+       * gengtype.c (new_structure): Append to structures list.
+       (find_structure): Likewise.
+
 2016-11-10  Jim Wilson  <jim.wilson@linaro.org>
 
        * tree-loop-distribution.c (pg_add_dependence_edges): Return 2 if
index 760f9859184e7349f4984915192858560d478aa6..a5795473b737f41e3b5ef3fab7ef4ab3b4c472a7 100644 (file)
@@ -744,10 +744,11 @@ new_structure (const char *name, enum typekind kind, struct fileloc *pos,
   type_p s = NULL;
   lang_bitmap bitmap = get_lang_bitmap (pos->file);
   bool isunion = (kind == TYPE_UNION);
+  type_p *p = &structures;
 
   gcc_assert (union_or_struct_p (kind));
 
-  for (si = structures; si != NULL; si = si->next)
+  for (si = structures; si != NULL; p = &si->next, si = *p)
     if (strcmp (name, si->u.s.tag) == 0 && UNION_P (si) == isunion)
       {
        type_p ls = NULL;
@@ -793,8 +794,7 @@ new_structure (const char *name, enum typekind kind, struct fileloc *pos,
       type_count++;
       s = XCNEW (struct type);
       s->state_number = -type_count;
-      s->next = structures;
-      structures = s;
+      *p = s;
     }
 
   if (s->u.s.lang_struct && (s->u.s.lang_struct->u.s.bitmap & bitmap))
@@ -829,21 +829,20 @@ find_structure (const char *name, enum typekind kind)
 {
   type_p s;
   bool isunion = (kind == TYPE_UNION);
+  type_p *p = &structures;
 
   gcc_assert (kind == TYPE_UNDEFINED || union_or_struct_p (kind));
 
-  for (s = structures; s != NULL; s = s->next)
+  for (s = structures; s != NULL; p = &s->next, s = *p)
     if (strcmp (name, s->u.s.tag) == 0 && UNION_P (s) == isunion)
       return s;
 
   type_count++;
   s = XCNEW (struct type);
-  s->next = structures;
   s->state_number = -type_count;
-  structures = s;
   s->kind = kind;
   s->u.s.tag = name;
-  structures = s;
+  *p = s;
   return s;
 }