]> granicus.if.org Git - clang/commit
Avoid adding entries to the DeclContext lookup table multiple times when lazily
authorRichard Smith <richard-llvm@metafoo.co.uk>
Mon, 24 Jun 2013 07:20:36 +0000 (07:20 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Mon, 24 Jun 2013 07:20:36 +0000 (07:20 +0000)
commit096a394f3d5b4938640e1ac92d9b439a2bad0a23
tree631201929c5bb4b2dc0705d8248532e1919c7707
parentac8f43c9cb71880ed3fa7f56a2a2429eafbd4625
Avoid adding entries to the DeclContext lookup table multiple times when lazily
constructing a lookup table.

Previously, buildLookup would add lookup table entries for each item lexically
within the DC, and adding the first entry with a given name would trigger the
external source to add all its entries with that name. Then buildLookup would
carry on and re-add those entries all over again.

Instead, follow a simple rule: a declaration from an external source is only
ever made visible by the external source. One exception to this: since we don't
usually build a lookup table for the TU in C, and we never serialize one, we
don't expect the external source to provide lookups in the TU in C, so we build
those ones ourselves.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184696 91177308-0d34-0410-b5e6-96231b3b80d8
lib/AST/DeclBase.cpp
test/Modules/cxx-templates.cpp