diff options
author | Anna Zaks <ganna@apple.com> | 2012-04-12 22:36:48 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2012-04-12 22:36:48 +0000 |
commit | 8e0785286a8175cfb5315e29ca72a882e86e7d37 (patch) | |
tree | f13cb01f028351e88174995e04afc6ce009dde55 /clang/test/Analysis/check-deserialization.cpp | |
parent | 9fcb055917c4d757678895a324d78f7eb42c1037 (diff) | |
download | bcm5719-llvm-8e0785286a8175cfb5315e29ca72a882e86e7d37.tar.gz bcm5719-llvm-8e0785286a8175cfb5315e29ca72a882e86e7d37.zip |
[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..
llvm-svn: 154625
Diffstat (limited to 'clang/test/Analysis/check-deserialization.cpp')
-rw-r--r-- | clang/test/Analysis/check-deserialization.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/clang/test/Analysis/check-deserialization.cpp b/clang/test/Analysis/check-deserialization.cpp new file mode 100644 index 00000000000..2b0bce2b9ad --- /dev/null +++ b/clang/test/Analysis/check-deserialization.cpp @@ -0,0 +1,20 @@ +// RUN: %clang_cc1 -emit-pch -o %t %s +// RUN: %clang_cc1 -error-on-deserialized-decl S1_method -include-pch %t -analyze -analyzer-checker=core %s +// RUN: %clang_cc1 -include-pch %t -analyze -analyzer-checker=core -verify %s + +#ifndef HEADER +#define HEADER +// Header. + +void S1_method(); // This should not be deserialized. + + +#else +// Using the header. + +int test() { + int x = 0; + return 5/x; //expected-warning {{Division by zero}} +} + +#endif |