From 4fc7cf69bad8a143cb50bee5caa6ac536eca4c98 Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Tue, 3 Jan 1995 12:30:52 -0800 Subject: [PATCH] (duplicate_decls): Push to permanent obstack before creating new function types. From-SVN: r8717 --- gcc/c-decl.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gcc/c-decl.c b/gcc/c-decl.c index e343779901a..02ffa998fcb 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -1391,6 +1391,18 @@ duplicate_decls (newdecl, olddecl) /* Accept the return type of the new declaration if same modes. */ tree oldreturntype = TREE_TYPE (TREE_TYPE (olddecl)); tree newreturntype = TREE_TYPE (TREE_TYPE (newdecl)); + + /* Make sure we put the new type in the same obstack as the old ones. + If the old types are not both in the same obstack, use the + permanent one. */ + if (TYPE_OBSTACK (oldtype) == TYPE_OBSTACK (newtype)) + push_obstacks (TYPE_OBSTACK (oldtype), TYPE_OBSTACK (oldtype)); + else + { + push_obstacks_nochange (); + end_temporary_allocation (); + } + if (TYPE_MODE (oldreturntype) == TYPE_MODE (newreturntype)) { /* Function types may be shared, so we can't just modify @@ -1425,6 +1437,8 @@ duplicate_decls (newdecl, olddecl) if (types_match) TREE_TYPE (olddecl) = newtype; } + + pop_obstacks (); } if (!types_match) { -- 2.30.2