summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-08-22 01:47:18 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-08-22 01:47:18 +0000
commitd8a83718f0ab2c86a22001283479a3536e75be3b (patch)
tree2daea3ac708b8e9ea3d3f6edf2612e190824d0f3 /clang/lib/CodeGen/CodeGenModule.cpp
parent86da3d8d7ca1ac4139073ca40cdca55f8eb6947d (diff)
downloadbcm5719-llvm-d8a83718f0ab2c86a22001283479a3536e75be3b.tar.gz
bcm5719-llvm-d8a83718f0ab2c86a22001283479a3536e75be3b.zip
[modules] Rearrange how redeclaration chains are loaded, to remove a walk over
all modules and reduce the number of declarations we load when loading a redeclaration chain. The new approach is: * when loading the first declaration of an entity within a module file, we first load all declarations of the entity that were imported into that module file, and then load all the other declarations of that entity from that module file and build a suitable decl chain from them * when loading any other declaration of an entity, we first load the first declaration from the same module file As before, we complete redecl chains through name lookup where necessary. To make this work, I also had to change the way that template specializations are stored -- it no longer suffices to track only canonical specializations; we now emit all "first local" declarations when emitting a list of specializations for a template. On one testcase with several thousand imported module files, this reduces the total runtime by 72%. llvm-svn: 245779
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud