In the testcase below, we push_to_top_level to instantiate f and g, and they
can both use the previous_class_level cache from instantiating A<int>.
Wiping the cache in pop_from_top_level is not helpful; we'll do that in
pushclass if needed.
template <class T> struct A
{
int i;
void f() { i = 42; }
void g() { i = 24; }
};
int main()
{
A<int> a;
a.f();
a.g();
}
gcc/cp/ChangeLog:
* name-lookup.cc (pop_from_top_level): Don't
invalidate_class_lookup_cache.
auto_cond_timevar tv (TV_NAME_LOOKUP);
- /* Clear out class-level bindings cache. */
- if (previous_class_level)
- invalidate_class_lookup_cache ();
pop_class_stack ();
release_tree_vector (current_lang_base);