]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c++: less invalidate_class_lookup_cache
authorJason Merrill <jason@redhat.com>
Tue, 21 Mar 2023 15:12:42 +0000 (11:12 -0400)
committerJason Merrill <jason@redhat.com>
Tue, 2 May 2023 20:25:49 +0000 (16:25 -0400)
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.

gcc/cp/name-lookup.cc

index 7c61bc3bf611f9e9dce2948a0ef6bf2977505f24..8fd5733c1e249513adc3e94f38254f44ee005e89 100644 (file)
@@ -8205,9 +8205,6 @@ pop_from_top_level (void)
 
   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);