decl.c (saved_scope_p): New fn.
* decl.c (saved_scope_p): New fn. * class.c (pushclass): Don't clear class_cache_obstack if we have saved scopes. From-SVN: r29468
This commit is contained in:
parent
0868989e57
commit
51925d8a2a
|
@ -1,3 +1,9 @@
|
|||
1999-09-16 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* decl.c (saved_scope_p): New fn.
|
||||
* class.c (pushclass): Don't clear class_cache_obstack if we have
|
||||
saved scopes.
|
||||
|
||||
1999-09-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* lex.c (init_cpp_parse): Call xcalloc, not malloc/bzero.
|
||||
|
|
|
@ -4499,11 +4499,16 @@ pushclass (type, modify)
|
|||
/* Forcibly remove any old class remnants. */
|
||||
invalidate_class_lookup_cache ();
|
||||
|
||||
/* Now, free the obstack on which we cached all the values. */
|
||||
if (class_cache_firstobj)
|
||||
obstack_free (&class_cache_obstack, class_cache_firstobj);
|
||||
class_cache_firstobj
|
||||
= (char*) obstack_finish (&class_cache_obstack);
|
||||
/* Now, free the obstack on which we cached all the values.
|
||||
We can't do this if we have saved scopes sitting around, since
|
||||
they may have saved previous_class_values. */
|
||||
if (! saved_scope_p ())
|
||||
{
|
||||
if (class_cache_firstobj)
|
||||
obstack_free (&class_cache_obstack, class_cache_firstobj);
|
||||
class_cache_firstobj
|
||||
= (char*) obstack_finish (&class_cache_obstack);
|
||||
}
|
||||
}
|
||||
|
||||
/* If we're about to enter a nested class, clear
|
||||
|
|
|
@ -2481,6 +2481,12 @@ pop_from_top_level ()
|
|||
|
||||
free (s);
|
||||
}
|
||||
|
||||
int
|
||||
saved_scope_p ()
|
||||
{
|
||||
return current_saved_scope != NULL;
|
||||
}
|
||||
|
||||
/* Push a definition of struct, union or enum tag "name".
|
||||
into binding_level "b". "type" should be the type node,
|
||||
|
|
Loading…
Reference in New Issue