On Mar 12, 2012, at 8:12 PM, Richard Smith wrote: > Author: rsmith > Date: Mon Mar 12 22:12:56 2012 > New Revision: 152608 > > URL: http://llvm.org/viewvc/llvm-project?rev=152608&view=rev > Log: > Fix PR10447: lazily building name lookup tables for DeclContexts was broken. > The deferred lookup table building step couldn't accurately tell which Decls > should be included in the lookup table, and consequently built different > tables > in some cases. > > Fix this by removing lazy building of DeclContext name lookup tables. In > practice, the laziness was frequently not worthwhile in C++, because we > performed lookup into most DeclContexts. In C, it had a bit more value, > since there is no qualified lookup. > > In the place of lazy lookup table building, we simply don't build lookup > tables > for function DeclContexts at all. Such name lookup tables are not useful, > since > they don't capture the scoping information required to correctly perform name > lookup in a function scope. > > The resulting performance delta is within the noise on my testing, but appears > to be a very slight win for C++ and a very slight loss for C. The C > performance > can probably be recovered (if it is a measurable problem) by avoiding building > the lookup table for the translation unit.
It seems that buildLookup is actually used by LLDB's external AST source. I don't really remember the details of why. Richard, would you mind working with Sean Callanan on this? John. _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
