]> granicus.if.org Git - clang/commit
[analyzer] PCH deserialization optimization.
authorAnna Zaks <ganna@apple.com>
Thu, 12 Apr 2012 22:36:48 +0000 (22:36 +0000)
committerAnna Zaks <ganna@apple.com>
Thu, 12 Apr 2012 22:36:48 +0000 (22:36 +0000)
commit6a86082f3a06a2dcceaaf63f78a0e52d64bcbaa3
treecf41e29ac97fff116c78975aeecda1a68594e741
parent273ed9870aa064992fb3c25a1f4d8973b10ad36e
[analyzer] PCH deserialization optimization.

We should not deserialize unused declarations from the PCH file. Achieve
this by storing the top level declarations during parsing
(HandleTopLevelDecl ASTConsumer callback) and analyzing/building a call
graph only for those.

Tested the patch on a sample ObjC file that uses PCH. With the patch,
 the analyzes is 17.5% faster and clang consumes 40% less memory.
Got about 10% overall build/analyzes time decrease on a large Objective
C project.

A bit of CallGraph refactoring/cleanup as well..

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154625 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Analysis/CallGraph.h
include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
include/clang/StaticAnalyzer/Core/PathSensitive/FunctionSummary.h
lib/Analysis/CallGraph.cpp
lib/StaticAnalyzer/Core/ExprEngine.cpp
lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
test/Analysis/check-deserialization.cpp [new file with mode: 0644]
test/Analysis/objc-method-coverage.m [new file with mode: 0644]