]> granicus.if.org Git - clang/commit
[analyzer] Re-apply r170826 and make the dumping of the GallGraph
authorAnna Zaks <ganna@apple.com>
Fri, 21 Dec 2012 17:27:01 +0000 (17:27 +0000)
committerAnna Zaks <ganna@apple.com>
Fri, 21 Dec 2012 17:27:01 +0000 (17:27 +0000)
commitbd80231672a7418aa1a99d3dbbe1774205c88f74
tree2b0616e6d9735505ac7749b19a5a811f87c4db1d
parent95f38f614c8005b5cc398021e1f9e28ed233d533
[analyzer] Re-apply r170826 and make the dumping of the GallGraph
deterministic.

Commit message for r170826:

[analyzer] Traverse the Call Graph in topological order.

Modify the call graph by removing the parentless nodes. Instead all
nodes are children of root to ensure they are all reachable. Remove the
tracking of nodes that are "top level" or global. This information is
not used and can be obtained from the Decls stored inside
CallGraphNodes.

Instead of existing ordering hacks, analyze the functions in topological
order over the Call Graph.

Together with the addition of devirtualizable ObjC message sends and
blocks to the call graph, this gives around 6% performance improvement
on several large ObjC benchmarks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170906 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Analysis/CallGraph.h
lib/Analysis/CallGraph.cpp
lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
test/Analysis/debug-CallGraph.c