Go to file
Rafael Espindola 9551d3bad9 Check the linkage cache at every recursive step.
Before this patch the linkage cache was only used by the entry level function
(getLinkage). The function that does the actual computation (getLVForDecl),
never looked at it.

This means that we would not reuse an entry in the cache when getLVForDecl did
a recursive call. This patch fixes that by adding another computation enum
value for when we don't care about the linkage at all and having getLVForDecl
check the cache in that case.

When running "clang -cc1" over SemaExpr.ii this brings the number of linkage
computations from 93749 to 58426. When running "clang -cc1 -emit-llvm -O3" it
goes from 198708 to 161444.

For SemaExpr.ii at least linkage computation is a small enough percentage of
the work that the time difference was in the noise.

When asserts are enabled this patch also causes clang to check the linkage
cache even on recursive calls.

llvm-svn: 182799
2013-05-28 19:43:11 +00:00
clang Check the linkage cache at every recursive step. 2013-05-28 19:43:11 +00:00
clang-tools-extra Fix UseAuto replacing declaration lists with new expressions 2013-05-27 14:30:23 +00:00
compiler-rt [sanitizer] Improve getaddrinfo interceptor. 2013-05-28 14:34:37 +00:00
debuginfo-tests Remove IR scenario tests. 2013-03-15 20:52:10 +00:00
libclc Update the copyright coredits -- Happy new year 2013! 2013-01-01 10:00:19 +00:00
libcxx Neglected to remove a debugging comment from last commit. 2013-05-21 21:19:35 +00:00
libcxxabi Add capability to demangle invocation functions for ObjC blocks. 2013-04-10 19:44:03 +00:00
lld Parallel write. 2013-05-28 19:09:56 +00:00
lldb Add instructions for running LLDB tests with non-default compiler/architectures 2013-05-28 19:14:44 +00:00
llvm LTO+Debug Info: correctly emit inlined_subroutine when the inlined callee is 2013-05-28 19:01:58 +00:00
polly add comments to clarify the use of a temporary variable in the map insertion 2013-05-24 18:46:02 +00:00