On Mon, Mar 12, 2012 at 8:12 PM, Richard Smith <[email protected]>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. > I should have mentioned: we had a modules test which only passed if the lookup table for one of its namespaces happened to be built lazily. The current failures were easy to trigger before, by making seemingly-unrelated changes to the test which forced the lookup table to be built. That test is now XFAIL'd. - Richard
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
