- Jan 04, 2013
-
-
Ted Kremenek authored
llvm-svn: 171501
-
- Jan 03, 2013
-
-
Ted Kremenek authored
llvm-svn: 171439
-
Anna Zaks authored
This better reflects when callback is called and what the checkers are relying on. (Both names meant the same pre-IPA.) llvm-svn: 171432
-
- Jan 02, 2013
-
-
Chandler Carruth authored
Removes a duplicate #include as well as cleaning up some sort order regressions since I last ran the script over Clang. llvm-svn: 171364
-
- Dec 22, 2012
-
-
Ted Kremenek authored
Fix typo: objc_no_direct_instance_variable_assignmemt => objc_no_direct_instance_variable_assignment. Fixes <rdar://problem/12927551>. llvm-svn: 170971
-
Anna Zaks authored
The new callback greatly simplifies the checker. llvm-svn: 170969
-
- Dec 21, 2012
-
-
Anna Zaks authored
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. llvm-svn: 170906
-
Roman Divacky authored
llvm-svn: 170903
-
Anna Zaks authored
llvm-svn: 170832
-
Rafael Espindola authored
./bin/clang -cc1 -internal-isystem /home/espindola/llvm/build/lib/clang/3.3/include/ -analyze -analyzer-checker=debug.DumpCallGraph /home/espindola/llvm/clang/test/Analysis/debug-CallGraph.c -fblocks changes in each run. llvm-svn: 170829
-
Anna Zaks authored
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. llvm-svn: 170826
-
Anna Zaks authored
This paves the road for constructing a better function dependency graph. If we analyze a function before the functions it calls and inlines, there is more opportunity for optimization. Note, we add call edges to the called methods that correspond to function definitions (declarations with bodies). llvm-svn: 170825
-
- Dec 20, 2012
-
-
Ted Kremenek authored
Fixes <rdar://problem/12887356>. llvm-svn: 170724
-
Anna Zaks authored
Instead of using several callbacks to identify the pointer escape event, checkers now can register for the checkPointerEscape. Converted the Malloc checker to use the new callback. SimpleStreamChecker will be converted next. llvm-svn: 170625
-
- Dec 19, 2012
-
-
Ted Kremenek authored
This is plumbing needed for later functionality changes. llvm-svn: 170488
-
- Dec 17, 2012
-
-
Argyrios Kyrtzidis authored
llvm-svn: 170364
-
Anna Zaks authored
llvm-svn: 170362
-
Anna Zaks authored
performance heuristic After inlining a function with more than 13 basic blocks 32 times, we are not going to inline it anymore. The idea is that inlining large functions leads to drastic performance implications. Since the function has already been inlined, we know that we've analyzed it in many contexts. The following metrics are used: - Large function is a function with more than 13 basic blocks (we should switch to another metric, like cyclomatic complexity) - We consider that we've inlined a function many times if it's been inlined 32 times. This number is configurable with -analyzer-config max-times-inline-large=xx This heuristic addresses a performance regression introduced with inlining on one benchmark. The analyzer on this benchmark became 60 times slower with inlining turned on. The heuristic allows us to analyze it in 24% of the time. The performance improvements on the other benchmarks I've tested with are much lower - under 10%, which is expected. llvm-svn: 170361
-
- Dec 14, 2012
-
-
Anton Yartsev authored
llvm-svn: 170238
-
Anton Yartsev authored
llvm-svn: 170234
-
Anna Zaks authored
Fixes a bug, where we were dropping the state modifications from the checkBranchCondition checker callback. llvm-svn: 170232
-
Anna Zaks authored
llvm-svn: 170231
-
Ted Kremenek authored
llvm-svn: 170170
-
- Dec 13, 2012
-
-
Jordan Rose authored
Thanks for the -Wdocumentation catch, Dmitri! llvm-svn: 170139
-
Jordan Rose authored
We now check a few methods for UIResponder, NSResponder, and NSDocument. Patch by Julian Mayer! llvm-svn: 170089
-
Anna Zaks authored
This is a Band-Aid fix to a false positive, where we complain about not initializing self to [super init], where self is not coming from the init method, but is coming from the caller to init. The proper solution would be to associate the self and it's state with the enclosing init. llvm-svn: 170059
-
- Dec 12, 2012
-
-
Jordan Rose authored
We don't handle array destructors correctly yet, but we now apply the same hack (explicitly destroy the first element, implicitly invalidate the rest) for multidimensional arrays that we already use for linear arrays. <rdar://problem/12858542> llvm-svn: 170000
-
- Dec 11, 2012
-
-
Anna Zaks authored
inlined. Fixes a false positive that occurs if a user writes their own initWithBytesNoCopy:freeWhenDone wrapper. llvm-svn: 169795
-
- Dec 07, 2012
-
-
Anna Zaks authored
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. llvm-svn: 169639
-
Jordan Rose authored
This is the case where the analyzer tries to print out source locations for code within a synthesized function body, which of course does not have a valid source location. The previous fix attempted to do this during diagnostic path pruning, but some diagnostics have pruning disabled, and so any diagnostic with a path that goes through a synthesized body will either hit an assertion or emit invalid output. <rdar://problem/12657843> (again) llvm-svn: 169631
-
Ted Kremenek authored
This reduces canonicalization of ImmutableMaps. This reduces analysis time of one heavy Objective-C file by another 1%. llvm-svn: 169630
-
Ted Kremenek authored
llvm-svn: 169622
-
Ted Kremenek authored
The same queries can happen thousands of times. This reduces the analysis time on one heavy Objective-C file by 2.4%. llvm-svn: 169589
-
Ted Kremenek authored
Further reduce analysis time by 0.2% on a heavy Objective-C example by avoiding over-eager canonicalization of clusters. llvm-svn: 169586
-
David Blaikie authored
llvm-svn: 169581
-
Ted Kremenek authored
This reduces analysis time by 1.2% on one test case (Objective-C), but also cleans up some of the code conceptually as well. We can possible just make RegionBindingsRef -> RegionBindings, but I wanted to stage things. After this, we should revisit Jordan's optimization of not canonicalizing the immutable AVL trees for the cluster bindings as well. llvm-svn: 169571
-
- Dec 06, 2012
-
-
Ted Kremenek authored
Jordan and I discussed this, and we are going to do this another way. llvm-svn: 169538
-
Jordan Rose authored
llvm-svn: 169530
-
Jordan Rose authored
'currStmt', 'CleanedState', and 'EntryNode' were being set, but only ever used locally. llvm-svn: 169529
-
Jordan Rose authored
llvm-svn: 169528
-