]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree.c (build_type_attribute_variant): Move current_obstack restore after build_quali...
authorJeffrey A Law <law@cygnus.com>
Mon, 2 Aug 1999 05:07:23 +0000 (05:07 +0000)
committerJeff Law <law@gcc.gnu.org>
Mon, 2 Aug 1999 05:07:23 +0000 (23:07 -0600)
        Thu Jul 15 15:40:09 1999  Jim Wilson  <wilson@cygnus.com>
        * tree.c (build_type_attribute_variant): Move current_obstack restore
        after build_qualified_type call.
Brought over from the mainline sources.  Fixes spurious core dumps/aborts.

From-SVN: r28385

gcc/ChangeLog
gcc/tree.c

index 391774ce11e73c0704ea4998be84db4d38213f0a..3ec8ea0679cb01791e30982dd1b6ed3ecd8d9081 100644 (file)
@@ -3,6 +3,10 @@ Sun Aug  1 22:46:42 1999  Jeffrey A Law  (law@cygnus.com)
        * m68k.c (output_function_prologue): Fix typo in CPU32 case.
        (output_function_epilogue): Similarly.
 
+       Thu Jul 15 15:40:09 1999  Jim Wilson  <wilson@cygnus.com>
+       * tree.c (build_type_attribute_variant): Move current_obstack restore
+       after build_qualified_type call.
+
        Fri Jun  4 03:20:40 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
        * sh.c (fixup_addr_diff_vecs): Emit braf reference label.
        (braf_label_ref_operand): Delete.
index b61c11587ec85abda3662069d135e7b5442f242a..5e29d2f9115bfa27195ed09ff4725a1833579af0 100644 (file)
@@ -3300,7 +3300,6 @@ build_type_attribute_variant (ttype, attribute)
         current_obstack = TYPE_OBSTACK (ttype);
 
       ntype = copy_node (ttype);
-      current_obstack = ambient_obstack;
 
       TYPE_POINTER_TO (ntype) = 0;
       TYPE_REFERENCE_TO (ntype) = 0;
@@ -3335,6 +3334,12 @@ build_type_attribute_variant (ttype, attribute)
 
       ntype = type_hash_canon (hashcode, ntype);
       ttype = build_qualified_type (ntype, TYPE_QUALS (ttype));
+
+      /* We must restore the current obstack after the type_hash_canon call,
+        because type_hash_canon calls type_hash_add for permanent types, and
+        then type_hash_add calls oballoc expecting to get something permanent
+        back.  */
+      current_obstack = ambient_obstack;
     }
 
   return ttype;