]> granicus.if.org Git - clang/commit
[analyzer] Optimization heuristic: do not reanalyze every ObjC method as
authorAnna Zaks <ganna@apple.com>
Fri, 7 Dec 2012 21:51:47 +0000 (21:51 +0000)
committerAnna Zaks <ganna@apple.com>
Fri, 7 Dec 2012 21:51:47 +0000 (21:51 +0000)
commit75f31c4862643ab09479c979fabf754e7ffe1460
tree72faf09798aeba68ce163ae3d17d78d8328969f2
parent8784b03d35ff99d1851ef63bc3cccb651c7672d9
[analyzer] Optimization heuristic: do not reanalyze every ObjC method as
top level.

This heuristic is already turned on for non-ObjC methods
(inlining-mode=noredundancy). If a method has been previously analyzed,
while being inlined inside of another method, do not reanalyze it as top
level.

This commit applies it to ObjCMethods as well. The main caveat here is
that to catch the retain release errors, we are still going to reanalyze
all the ObjC methods but without inlining turned on.

Gives 21% performance increase on one heavy ObjC benchmark, which
suffered large performance regressions due to ObjC inlining.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169639 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
lib/StaticAnalyzer/Core/ExprEngine.cpp
lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
test/Analysis/objc-method-coverage.m